I'm trying to wrap my head around this, but I can't see any other explanation for the behavior I'm seeing. I'm using the latest recommended build (1.0.1), with NO plugins, on Windows XP with 32-bit Java. My server recently ran out of memory inexplicably, so I decided to monitor the java.exe process in Task Manager while I tested some things out. Whenever I first boot up the server, it levels out at about 245MB with nobody logged in. When I log in, it consumes about 40 more, hanging around 288MB (seems normal). However, when I log out, no memory is released (at least the first time), which is a bit eyebrow-raising. After logging in and out multiple times, the memory being used continues to rise and rise, and even 20 minutes later doesn't go down. Here is a timeline to illustrate it better: Server started, 0 people online: 246MB 1st login: 288MB logout: 287MB 2nd login: 296MB logout: 296MB 3rd login: 326MB logout: 325MB 4th login: 337MB logout: 337MB 5th login: 362MB logout: 362MB I allowed about a minute between logins to make sure that it wasn't just memory spikes. Now I'm looking at it 20 minutes later, and it is still at 362MB with 0 people logged in; over 100MB higher than when I started it up. Am I missing something or is this a known problem?
The memory leak is called 'Java', and the problem is Garbage Collection: http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)
I'm a C++ programmer, so I'm very familiar with what causes memory leaks. My question is whether this is a known issue or if it's somehow by design. I'd like to know if other people see similar results when benchmarking their own servers.
10-25 MB per login is a pretty fucking major leak. If this is indeed a memory leak, it should be first priority for the next build.