Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (538)
Games in Android Showcase (132)
games submitted by our members
Games in WIP (600)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Memory Analysis and Garbage Collection Confusion  (Read 2115 times)
0 Members and 1 Guest are viewing this topic.
Offline Cero
« Posted 2011-11-07 04:45:22 »

So I'm doing some memory leak checks

I always print the amount of RAM I have supposedly used onto the screen, in MB:
1  
ram_occupied = (int)(Runtime.getRuntime().maxMemory() - Runtime.getRuntime().freeMemory())/1024/1024;

always trusted this is correct.

now it build up after time, gc makes it lower sometimes, all fine and good.

so now I want to do some analysis, I use Eclipse's Memory Analyzer and "Acquire Heap Dump", right
however the heap dump is only 3.4 MB of size - not telling me much, while I thought I had accumulated like 70 MB by now, as told by the code above

this btw also applies to jvisualvm and such

if I run the GC manually by using the button in visual vm for example, used ram shrinkes to about 4MB, from for example 70MB

this leds me to believe that the reason is, that most of it (66 MB) is just junk and not dump @ heap dump therefore - and stuff I don't need to care about

my ram usage climbs 1-2MB per second on average, I use G1GC, and it can clean up until like 4MB - it doesnt always clean up everything, due to G1 I guess

Offline theagentd

« JGO Bitwise Duke »


Medals: 365
Projects: 2
Exp: 8 years



« Reply #1 - Posted 2011-11-07 10:08:53 »

Isn't it just memory used by the VM? Eclipse might also be skipping memory that your code doesn't allocate, like stuff Java automatically allocates for you on startup or something.

Myomyomyo.
Offline princec

« JGO Spiffy Duke »


Medals: 429
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #2 - Posted 2011-11-07 10:53:17 »

I believe the heap dump is a walk of live objects - it won't give you the garbage.

Cas Smiley

Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline Riven
« League of Dukes »

« JGO Overlord »


Medals: 840
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #3 - Posted 2011-11-07 22:46:16 »

no. no. no. Emo
1  
ram_occupied = (int)(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/1024/1024;

note the tiny change.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social
Offline Cero
« Reply #4 - Posted 2011-11-11 16:26:03 »

no. no. no. Emo
1  
ram_occupied = (int)(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/1024/1024;

note the tiny change.

well my Xms and Xmx are always equal.

so "total" returns less (122MB for example) than "max" (128MB which is equivalent to the  -Xms128m -Xmx128m I specify)
Reading the Javadoc doesn't make it all clear to me, but I guess "total" doesn't include memory the jvm uses by itself (unrelated to my code), while "max" just shows the whole 128

although I read that
Quote
If you run with -Xms1024m -Xmx1024m, the value you get from totalMemory() and maxMemory() will be equal.

Offline Riven
« League of Dukes »

« JGO Overlord »


Medals: 840
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #5 - Posted 2011-11-11 16:51:36 »

That may have long been the case, but recent JVMs are able to shrink the heap (eventually) to a value lower than you started with.

Hi, appreciate more people! Σ ♥ = ¾
Learn how to award medals... and work your way up the social
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

rwatson462 (29 views)
2014-12-15 09:26:44

Mr.CodeIt (20 views)
2014-12-14 19:50:38

BurntPizza (40 views)
2014-12-09 22:41:13

BurntPizza (75 views)
2014-12-08 04:46:31

JscottyBieshaar (37 views)
2014-12-05 12:39:02

SHC (50 views)
2014-12-03 16:27:13

CopyableCougar4 (47 views)
2014-11-29 21:32:03

toopeicgaming1999 (113 views)
2014-11-26 15:22:04

toopeicgaming1999 (100 views)
2014-11-26 15:20:36

toopeicgaming1999 (30 views)
2014-11-26 15:20:08
Resources for WIP games
by kpars
2014-12-18 10:26:14

Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50
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
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!