Memory use 70+MB, one user connected

I’'ve seen some forum posts regarding older (Jive) servers, and Linux setups, as well as “Java memory usage”.

But my situation seems different - I’'m running on XP Pro SP2, with 2 Gigs RAM. According to the Wildfire admin page, Java memory use is “20.99 MB of 493.06 MB (4.3%) used”, but my Task Manager says that wildfired.exe is using 73,000 K… This seems a little high!

It’‘s been running for 9 hours, and has had 2 users connected the whole time, no messages sent. What’'s the deal?

Thanks!

P.S - I’'m running Wildfire 2.4.4.

Message was edited by:

Blue Ninja

Welcome Ninja,

do you know little Ninjai http://www.ninjai.com/ ?

The win32 Taskmanager should be right, the wildfire admin page refers only to the java heap, whose max value is specified with Xmx. Java.exe itself needs some memory to be loaded and it needs memory to handle the threads inside the JVM. It also loads the classes, which are also not stored in the java heap.

This is normal.

LG

Hi there, thanks for the reply.

I think I wasn’‘t clear on my question, though - I am aware that the two measure memory differently, and that the “Java memory used” will differ from Task Manager’‘s value. I know that’'s normal.

What I was wondering was, is it normal for Wildfire to take up that much memory at all? It’'s the largest-running process on my system (well, aside from one of my BOINC projects!), but with 2 idle connections, is doing the least!

I’‘ve never heard of Ninjai, but I’'ll check it out

Hi,

so you’'re wondering about the 500 MB? Actually the default Xmx value should be 64 MB (maybe only for Solaris) or 1/4 of the available memory, the latter seems to be the case.

You may want to create a vmoptions file, like described in “%programfiles%\wildfire\documentation\install-guide.html” section Custom Parameters[/b].

So you can limit the Xmx value to 64 MB instead of 512 MB.

LG

Actually, I was wondering about the 70+ MB… But I took your advice, and set that file to:

-Xms16m

-Xmx32m

Now, the Admin page says that Java memory is 7.98 MB of 30.88. But Task Manager says the process is using almost 50. I just don’‘t get why this is hogging so much memory! While I’‘ve never actually seen a Java program that wasn’‘t an insane memory hog, I’‘ve always assumed it was just bad luck on my end - that I just happened to come across the badly-written ones… But I’'m starting to think that Java is just a completely inefficient way to write - well, anything! PLEASE, prove me wrong

Hi,

50 MB is really fine, that’‘s lower than the 75 MB Windows2000 kernel I’'ve recently seen.

Do you think that Microsoft’'s .net programs or other OO programs are more memory friendly?

Imho for a server process the memory footprint is not an issue.

LG

It’‘s not that I don’‘t have the memory to spare, it’‘s that this process should be using NOWHERE near that much, and I’'m concerned something is wrong.

I have Apache running, with a primary and 2 virtual hosts, buth with active phpBB forums, and numerous, frequent connections - taking up about 20 MB. This includes some custom .NET CGI programs I wrote for a specific purpose, which by themselves take about 4MB.

I also have a mail server, which thanks to spam, gets a hell of a lot more connections than the web server. The mail server is hosting 2 domains, about 20 accounts, most of which poll for new mail every minute - taking up less than 7 MB.

Furthermore, I have Shareaza running, with over 700 active connections, downloading over a dozen files currently, though over 1,000 are “Pending” - this all taking less than 40 MB.

And Trillian - my contact list has over 200 people on it, laerting me to signons/offs every few seconds. It’'s connected to AIM, ICQ, MSN, Yahoo, and 3 Jabber accounts. Two of those Jabber connections are the only two Jabber connections that Wildfire is handling, it has no other connections yet. Trillian is eating up 12 MB.

Lastly, Wildfire - with only the two aforementioned connections, none of which have ever even sent a message, taking over 70 MB.

I certainly have 70MB to spare, but it is absolutely, unconditionally, wholly unacceptable for Wildfire to be using more than all of those programs, while doing absolutely nothing. I can see no possible justification for allocating so much memory, when absolutely nothing is happening with it! Not when all those other programs have many (sometimes HUNDREDS) of active connections, open files, current transfers, etc - all with a fraction of the memory footprint.

But I’‘m not sure it’'s a Java runtime issue, because when Firefox is running a Java app and the Java systray icon comes up, the Firefox process is still well under 20 MB.

I’‘m still hoping there’‘s some configuration issue or something that I’‘ve overlooked. None of my clients would ever allow me to get away with writing an app that used that much memory for such a basic task, and I know I’‘m not the world’‘s greatest programmer… So I can only assume the Wildfire developers wouldn’'t try that, either! Especially when they have a commercial version

Anything else I can check?

Hi Ninja,

you mention only old-school C++ programs, some of them are only available for windows. Wildfire runs on every operating system for which a SUN JVM is availble (-> not on AIX). The JVM is a virtual machine, so it has a larger memory footprint to convert the java instructions to native windows (or linux or solaris) instructions, just like vmware or virtualpc.

The JRE itself is a 17 MB download package. The “MS 2.0 .NET Framework” is a 20 MB download package, it will also compile the .net programs at runtime and run a garbage collector. I don’'t know where the “.NET” memory usage will be displayed (kernel or program) but it makes more sense to compare these to types of programs.

I’'m running Wildfire and JWChat within Tomcat, Tomcat uses 38 MB while the Wildfire status page displays 8 of 64 MB free. If you use Tomcat and .war files to install java applications then you will have the initial large footprint only for Tomcat.

If you want a program with a small memory footprint then do not use a virtual machine like java.

LG

Thanks for all the information. I guess I’‘ll wait for binaries for jabberd2.x, since that’‘s in C++ and will run with a reasonable footprint. None of the other servers listed have a non-commercial license, MySQL support, and aren’'t Java. A shame, though, as I did like the interface for Wildfire.

Take care!

Hi Ninja,

for $5 you’'ll get 50 MB memory, so you should have other reasons not to use Wildfire. Maybe you like the way the configuration is done or users are added using jabberd2? I just read Adding Users @ http://jabberd.jabberstudio.org/2/docs/section06.html#6_3_2 … and it is as simple as mysql -u jabberd2 -p jabberd2

use jabberd2

insert into authreg (username, realm, password)

-> values (’‘myusername’’, ‘‘somedomain.com’’, ‘‘mypassword’’);[/code] so you’'d have to say good bye to a nice configuration front end.

Maybe you want to calculate the TCO before deciding which server to use.

This is what Jivesoftware.com states: “Low TCO: … our applications require much less overhead and maintenance.” One should check for itself if this is true

LG

Well, it’‘s not a public server, so I won’‘t need to be adding users aside from my own support accounts. And I’'m pretty good with MySQL

Besides, writing a config front-end for jaberd2 won’'t be hard - I can do that in VB6 or .NET without the constant overhead of the JRE.

While low maintenance may be true, I’‘d have to argue with the “our applications require much less overhead” statement - it seems Wildfire uses SIGNIFICANTLY more overhead than ANY of the other Jabber servers I’'ve tested out thus far!

I do like the application, don’‘t get me wrong. It’‘s just that if I let every process on my machine hog that much memory, then soon the 4GB limit for this motherboard won’‘t be sufficient. I’‘m not the kind of over-obsessive programer who’‘d take “y2k”-like date shortcuts to save 2 bytes per record in the name of memory conservation, but at the same time I can’‘t use the low cost of memory as an excuse for inefficient design. I have to find a happy medium somewhere… But Java isn’'t it

Oh, also - for increased performance, I have my paging file disabled. And I just don’‘t think I should have to shut down other programs just to play Counter-Strike: Source for a few hours! That’'s why I got the second gig in the first place…

Hi Ninja,

maybe you want take a look at http://www.bytonic.de/html/jake2.html - it is a Java port of the 3D engine of Quake2. Bad performance is usually not a java issue.

LG

Does it not use the JRE? If Wildfire eats 70+ MB even when that file is set to a max of 32, I’‘d think you’'d need a whole server farm for Quake2! Either that, or maybe they should have a crack at the Wildfire code

You seem to be having a knee jerk reaction to Java. Yes, it uses memory, but unless you’‘re seeing a slow down in your system overall, who really cares. VB6 and .NET have their own overhead that’‘s comparable to Java. What’‘s important is that Wildfire scales to meet your performance needs. If you plan to use wildfire for two concurrent users, when it’'s built to handle thousands, then perhaps you should use jabberd or ejabber if memory is a concern.

I hope you find your happy medium.

Noah

You do have a point. I am somewhat jaded, as my experience with various Java apps so far has apparently been with bloated apps, and not efficient ones - though I’'m sure there are many examples of the latter that I just have not come across yet.

I know there’'s always overhead, but 70+ MB of overhead for a tiny, simple application seems way out of proportion - the .NET overhead is smaller, the C runtimes and even the VB runtimes are far, far, FAR smaller.

And while it’‘s true that I have the memory to spare, I can’‘t agree with the “who really cares” aspect of it. To put things in perspective, humans flew to the moon and back with less memory and less processing power than my old Timex DataLink watch had - yet it takes literally MILLIONS of times those resources to handle simple text messaging? Talk about the “slippery slope” effect! If someone doesn’'t start caring about so much wasted memory, then a basic entry level PC will soon need a 4 Exaherz Processor and 6 Terabytes of memory just to check email!

I think comparing runtime footprints is not really a fair comparison between platforms. You’‘re right, the flight to the moon had very constrained resource, but that’'s due to two realities. The environment was constrained and it cost a hugh amount of money to get there. In fact, high level languages like C were not even a consideration at that point. It was all Ada, a language that was mathematically error free.

To create a simple text message in java using J2ME could be done in a very small memory footprint, but the requirement isn’‘t there. In fact, the way Wildfire is designed is to grab a good portion of resources so it can scale to thousands of concurrent users. The dynamics and footprint of such an application is very different than that of a application that needs to handle 2. Oracle out of the box eats up 1gig of memory unless you explicitly tune it down. I don’'t think you can get it smaller than 250mb. The reason why the footprint exists is to allow for scalability.

Windows XP consumes a whole bunch of resources. VB and .Net are small wrappers around the entire win32 api and services that run on the host. Their runtime appear small when in reality, you must factor in the OS which is considerably not.

Remember, it’‘s about finding a happy medium. There are jabber servers that take up less memory, but do they provide the same scalability and management interface you’‘re looking for? That’'s a question you need to ask yourself.

Noah

I have to second the caution about Jabberd2…

After spending a FEW DAYS getting all the needed software installed, everything configured, trying to get conferencing to work, etc, etc, etc…

I almost wept when 5 minutes after installing Jive Messenger I was sitting in front of a lovely console and could go look at the well thought out, sane configuration files.

Yeah java uses memory. But it also makes building applications like Wildfire easier which means the developers can spend time making a feature complete usable application.

It also doesn’'t hurt that they seem to be a bright bunch.

Yes. I am a fan…

Well, if I run into a situation where a high-load server will be needed, then I’‘d recommend Wildfire - that is, IF it truly scales well, and can handle at least a few thousand more connections without a significant increase in the current footprint. If it performs well under load and uses a reasonable amount of resources under THOSE circumstances, then I’‘m fine with it. The interface is nice, it’‘s easy to administer (which isn’‘t a big deal to me, personally), and based on other threads I’'ve been reading, it seems pretty stable.

But MY happy medium is a more lightweight solution. I don’'t need a server pre-allocating resources in anticipation of an incoming tidal wave of clients, when there will always be a very limited number.

So it doesn’'t seem the right solution for me, but it admittedly looks like a very good one for many others!

just wondering why would you need a “server” at all for just 2 users? Simple LAN chating program wount do? Though maybe that’'s because you want to have them in your Trillian.