Java-Gaming.org    
Featured games (91)
games approved by the League of Dukes
Games in Showcase (579)
games submitted by our members
Games in WIP (500)
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 1955 times)
0 Members and 1 Guest are viewing this topic.
Offline Cero
« Posted 2011-11-07 05: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

Online theagentd
« Reply #1 - Posted 2011-11-07 11: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 Kernel


Medals: 282
Projects: 3
Exp: 16 years


Eh? Who? What? ... Me?


« Reply #2 - Posted 2011-11-07 11: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
Online Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #3 - Posted 2011-11-07 23: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 rankings
Offline Cero
« Reply #4 - Posted 2011-11-11 17: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.

Online Riven
« League of Dukes »

JGO Overlord


Medals: 605
Projects: 4
Exp: 16 years


Hand over your head.


« Reply #5 - Posted 2011-11-11 17: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 rankings
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.

xsi3rr4x (33 views)
2014-04-15 18:08:23

BurntPizza (30 views)
2014-04-15 03:46:01

UprightPath (45 views)
2014-04-14 17:39:50

UprightPath (28 views)
2014-04-14 17:35:47

Porlus (45 views)
2014-04-14 15:48:38

tom_mai78101 (66 views)
2014-04-10 04:04:31

BurntPizza (126 views)
2014-04-08 23:06:04

tom_mai78101 (226 views)
2014-04-05 13:34:39

trollwarrior1 (191 views)
2014-04-04 12:06:45

CJLetsGame (199 views)
2014-04-01 02:16:10
List of Learning Resources
by SHC
2014-04-18 03:17:39

List of Learning Resources
by Longarmx
2014-04-08 03:14:44

Good Examples
by matheus23
2014-04-05 13:51:37

Good Examples
by Grunnt
2014-04-03 15:48:46

Good Examples
by Grunnt
2014-04-03 15:48:37

Good Examples
by matheus23
2014-04-01 18:40:51

Good Examples
by matheus23
2014-04-01 18:40:34

Anonymous/Local/Inner class gotchas
by Roquen
2014-03-11 15:22:30
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!