* NativeObjectManager is now limited for 100 objects deleted per frame to reduce spikes with large heap config
git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9319 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
0751d9ff76
commit
9390125d6c
@ -51,6 +51,12 @@ public class NativeObjectManager {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(NativeObjectManager.class.getName());
|
||||
|
||||
/**
|
||||
* The maximum number of objects that should be removed per frame.
|
||||
* If the limit is reached, no more objects will be removed for that frame.
|
||||
*/
|
||||
private static final int MAX_REMOVES_PER_FRAME = 100;
|
||||
|
||||
/**
|
||||
* The queue will receive notifications of {@link NativeObject}s which are no longer
|
||||
* referenced.
|
||||
@ -91,15 +97,19 @@ public class NativeObjectManager {
|
||||
* Deletes unused GLObjects
|
||||
*/
|
||||
public void deleteUnused(Object rendererObject){
|
||||
while (true){
|
||||
int removed = 0;
|
||||
while (removed < MAX_REMOVES_PER_FRAME) {
|
||||
NativeObjectRef ref = (NativeObjectRef) refQueue.poll();
|
||||
if (ref == null)
|
||||
return;
|
||||
break;
|
||||
|
||||
refList.remove(ref);
|
||||
ref.objClone.deleteObject(rendererObject);
|
||||
if (logger.isLoggable(Level.FINEST))
|
||||
logger.log(Level.FINEST, "Deleted: {0}", ref.objClone);
|
||||
removed++;
|
||||
}
|
||||
if (removed >= 1) {
|
||||
//System.out.println("NativeObjectManager: " + removed + " native objects were removed from GL");
|
||||
logger.log(Level.FINE, "NativeObjectManager: {0} native objects were removed from GL", removed);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user