|
|
@ -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();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|