out of curiosity I monitored the memory usage of my game engine and noticed that it's memory usage rises at a rate of about 4k/second (task manager, Windows 7 x64). So far the program only consists of an entity/component system and a simple game class for testing. Essentially my game loop looks like this:

I already found out that when commenting the scene.update and scene.render method calls out the memory usage is constant, but the only thing I do in those methods is iterating over an empty ArrayList<Entity>:

In their update and render method entities then call the update/render methods of their respective components which do the actual updating/rendering. As already mentioned the program currently iterates over an empty list of entities, so I don't understand why the memory usage increases constantly.It's not a dramatic increase, from initially 6,000 KB it goes up to 15,000 in about half an hour, but it still concerns me as I assume that it'll be much harder to find the reason for this when my engine is actually doing something.

So you see you have at least a new reference to a Iterator each iteration (even if the list is empty, you have to check the i.hasNext() .So in half an hour all these references will sum up to something . The garbage collector will not run to clean up just a few KB, it still has a lot of memory to spend before wanting to run.

I'd like to hear about the relative merits of the different profilers, if others are willing. I've never used jvisualvm.exe, didn't even know about it until reading the above.

I had good luck discovering some "leaking" threads (continually being created but never dying) during a session with jconsole. It is fascinating watching the GC cycles, as data is moved from "Eden" to "Survivor" to ...

Yes, that denotes an interface. I tried to use adjectives for interface names but to me it started to look silly pretty soon (for each Updateable do update...). So I ended up using substantives. My problem is that they tend to clash with class names and thats why prefixing interfaces with "I" works for me.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org