correct 'avaiable()' to use max of young / eden

pull/1/head
sixcooler 13 years ago
parent 3db2b5f8e8
commit 985b78cf89

@ -58,7 +58,7 @@ public class GenerationMemoryStrategy extends MemoryStrategy {
* @return bytes * @return bytes
*/ */
protected final long available() { protected final long available() {
return available(false); return available(true);
} }
/** /**
@ -67,7 +67,7 @@ public class GenerationMemoryStrategy extends MemoryStrategy {
* @return bytes * @return bytes
*/ */
private final long available(final boolean force) { private final long available(final boolean force) {
return force & properState() ? Math.max(youngAvailable(), oldAvailable()) : Math.min(youngAvailable(), Math.max(M, oldAvailable())); return force & properState(force) ? Math.max(youngAvailable(), oldAvailable()) : Math.min(youngAvailable(), Math.max(M, oldAvailable()));
} }
/** /**
@ -94,14 +94,6 @@ public class GenerationMemoryStrategy extends MemoryStrategy {
return heap.getHeapMemoryUsage().getMax(); return heap.getHeapMemoryUsage().getMax();
} }
/**
* currently not reserved memory
* @return bytes
*/
private final long unreserved() {
return Math.max(0, maxMemory() - total());
}
/** /**
* checks if a specified amount of bytes are available * checks if a specified amount of bytes are available
* after the jvm recycled unused objects * after the jvm recycled unused objects
@ -113,7 +105,7 @@ public class GenerationMemoryStrategy extends MemoryStrategy {
protected final boolean request(final long size, final boolean force, boolean shortStatus) { protected final boolean request(final long size, final boolean force, boolean shortStatus) {
if (size == 0l) return true; // does not make sense to check - returning true without setting shortStatus (which also doesn't make sense to me) if (size == 0l) return true; // does not make sense to check - returning true without setting shortStatus (which also doesn't make sense to me)
final boolean unknown = size < 0l; // size < 0 indicate an unknown size - maybe from gziped streams final boolean unknown = size < 0l; // size < 0 indicate an unknown size - maybe from gziped streams
final boolean r = unknown? properState(true) : size < available(force); final boolean r = unknown? properState(force) : size < available(force);
shortStatus = !r; shortStatus = !r;
return r; return r;
} }
@ -132,7 +124,7 @@ public class GenerationMemoryStrategy extends MemoryStrategy {
*/ */
private final long oldAvailable() { private final long oldAvailable() {
final MemoryUsage usage = getUsage(old, true); final MemoryUsage usage = getUsage(old, true);
return unreserved() + usage.getCommitted() - usage.getUsed(); return Math.max(usage.getMax(), usage.getCommitted()) - usage.getUsed();
} }
/** /**

Loading…
Cancel
Save