TheAnalogKid
|
 |
«
Posted
2003-12-11 15:45:08 » |
|
Hi all,
I'm writting a 2D platform game and I think I have a memory issue. Here is the log of the game:
D:\game_dev>set VM_OPTIONS=-Xms32m -Xmx64m -Dsun.java2d.accthreshold=0 -verbose:gc -XX:+PrintGCTimeStamps
D:\game_dev>java -cp bin;lib/dom4j.jar;lib/gage_timer-1_0.jar;lib/jutils.jar;lib/jinput.jar;lib/dxinput.jar -Djava.library.path=lib -Xms32m -Xmx64m -D sun.java2d.accthreshold=0 -verbose:gc -XX:+PrintGCTimeStamps bubblegame.BubbleGame 0.000: [GC 2111K->222K(32576K), 0.0215583 secs] Running at 85 hertz New Acceleration Threshold: 0 [11-Dec-2003 12:10:46 PM] INFO - loading map... [11-Dec-2003 12:10:46 PM] INFO - Found Chunk - MPHD, reading... [11-Dec-2003 12:10:46 PM] INFO - loading map header. [11-Dec-2003 12:10:46 PM] INFO - FMP version : 1.0 [11-Dec-2003 12:10:46 PM] INFO - MapWidth : 300 [11-Dec-2003 12:10:46 PM] INFO - MapHeight : 80 [11-Dec-2003 12:10:46 PM] INFO - BlockWidth : 32 [11-Dec-2003 12:10:46 PM] INFO - BlockHeight : 32 [11-Dec-2003 12:10:46 PM] INFO - ColourDepth : 32 [11-Dec-2003 12:10:46 PM] INFO - BlockByteSize : 32 [11-Dec-2003 12:10:46 PM] INFO - NoOfBlocks : 1283 [11-Dec-2003 12:10:46 PM] INFO - NoOfImages : 1266 [11-Dec-2003 12:10:46 PM] INFO - Found Chunk - EDHD, skipping... [11-Dec-2003 12:10:46 PM] INFO - Found Chunk - CMAP, reading... [11-Dec-2003 12:10:46 PM] INFO - loading 256 entries. [11-Dec-2003 12:10:46 PM] INFO - Found Chunk - BKDT, reading... [11-Dec-2003 12:10:46 PM] INFO - loading 1283 blocks. [11-Dec-2003 12:10:46 PM] INFO - Found Chunk - BGFX, reading... [11-Dec-2003 12:10:46 PM] INFO - loading 1266 images. 4.512: [GC 2333K->1392K(32576K), 0.0330226 secs] 4.703: [GC 3502K->1938K(32576K), 0.0141814 secs] 4.902: [GC 4050K->2503K(32576K), 0.0148150 secs] 5.131: [GC 4615K->3724K(32576K), 0.0205685 secs] 5.382: [GC 5834K->4205K(32576K), 0.0115557 secs] 5.579: [GC 6315K->5444K(32576K), 0.0200933 secs] 5.769: [GC 7556K->5922K(32576K), 0.0114517 secs] 5.923: [GC 8034K->6419K(32576K), 0.0124315 secs] 6.127: [GC 8529K->7360K(32576K), 0.0159188 secs] [11-Dec-2003 12:10:48 PM] INFO - Found Chunk - BODY, reading... [11-Dec-2003 12:10:48 PM] INFO - Found Chunk - LYR1, reading... [11-Dec-2003 12:10:48 PM] INFO - Map loaded succesfully. 7.127: [GC 9472K->8017K(32576K), 0.0169907 secs] 7.822: [GC 10118K->9432K(32576K), 0.0185303 secs] 8.126: [GC 11500K->10386K(32576K), 0.0125689 secs] Number of buffers used: 3
Available accelerated memory (in bytes): 25898752 8.662: [GC 12498K->11158K(32576K), 0.0132754 secs] Windows 2000 Ticks/Second: 1193182 Ticks/Frame: 14037 27.735: [GC 13270K->11214K(32576K), 0.0090187 secs] 72.364: [GC 13326K->11223K(32576K), 0.0037304 secs] BufferStrategy was page flipping.
fps : 85.0 Game Duration: 112 seconds 110.193: [GC 13335K->12053K(32576K), 0.0188094 secs]
You can see in the 2 last bold lines that the GC frees about 2 megs of memory. This behavior will continue until the program terminates.
The strange thing about this is that my code doesn't create that much objects to fill 2 megs of memory regularly. The only object I create is String to display the fps BUT only when the fps value changes and I've commented out these lines of code and there is still a lot of garbage. So is someone could help me to explain this undesired behavior?
The game runs with the resolution of 640x480x16 at 85 hertzs with 3 buffers to do page flipping.
You can see the VM options I pass to the VM. I use JDK 1.4.2_02, it runs on Win 2000 with a Pentium 3 866 and a GeForce TNT 2 32 megs.
Any idea?
I really don't see what happens here.
Thanks
|