jPCT-AE - a 3d engine for Android > Support

GC frees too much

(1/3) > >>

vael:
Hello,

I'm experiencing lags because of GC and I am rendering only like 30-40 box primitives at a time. I reuse all the objects so I actually I stop allocating memory after 2-3 seconds. But here is what I see in log:


--- Code: ---D/FREEROLL(  650): CURRENT FPS: 30
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 40
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 50
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 44
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 52
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 56
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/dalvikvm(  650): GC_FOR_MALLOC freed 39703 objects / 1584536 bytes in 77ms
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 45
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 60
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 54
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 50
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/dalvikvm(  173): GC_EXPLICIT freed 487 objects / 48936 bytes in 837ms
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 45
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/dalvikvm(  650): GC_FOR_MALLOC freed 47179 objects / 1782160 bytes in 78ms
D/FREEROLL(  650): CURRENT FPS: 41
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 56
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 57
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 49
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
E/Tethering(   85): active iface (usb0) reported as added, ignoring
I/jPCT-AE (  650): Static references cleared...
D/LocationMasfClient(   85): getNetworkLocation(): Returning cache location with
 accuracy 3875.0
D/FREEROLL(  650): CURRENT FPS: 47
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 47
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/dalvikvm(  650): GC_FOR_MALLOC freed 48783 objects / 1835704 bytes in 77ms
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 43
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 52
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 47
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 54
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 50
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/dalvikvm(  650): GC_FOR_MALLOC freed 48624 objects / 1832888 bytes in 76ms
D/FREEROLL(  650): CURRENT FPS: 45
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 53
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 61
I/jPCT-AE (  650): Static references cleared...
I/jPCT-AE (  650): Static references cleared...
D/FREEROLL(  650): CURRENT FPS: 58

--- End code ---

as you see it frees about 1.5mb every few seconds. I have no any dynamic light in the world. When I had it, I had like 1.5mb free per second.

So my question is: why does jPCT needs so much memory to just render? or do I do something wrong?

Thank you

EgonOlsen:
Actually, it doesn't allocate any additional memory just for the rendering. However, some other methods do/have to and not all of them have been tweaked to minimize object creation. It's impossible to tell the source of this from your description alone. Do you have a test case?

vael:
The source is quite big already so lets try to find it out this way:

I use these methods in the main loop:

Camera's:
rotateX(float);
setPosition(float, float, float);
setOrientation(SimpleVector, SimpleVector);

Object3D's:
translate(float, float, float);
rotateAxis(SimpleVector, float);

can they cause this? as I said I am having about 40 boxes at a time

EgonOlsen:
Are you creating new SimpleVectors in each iteration? If so, don't do this and recycle old ones.

And which version of jPCT-AE are you using? Older versions weren't as gc friendly as newer ones.

vael:
I use an up-to-date version of jPCT.

And no, I don't create new SimpleVector's but maybe those methods do?

Navigation

[0] Message Index

[#] Next page

Go to full version