diff options
| author | Michael Peter Christen <mc@yacy.net> | 2014-02-09 12:25:55 +0100 |
|---|---|---|
| committer | Michael Peter Christen <mc@yacy.net> | 2014-02-09 12:25:55 +0100 |
| commit | acc8d7faa7dd3a23ba04056b1beb554a56b98219 (patch) | |
| tree | a83e4a8ed3e0f4c086c740ea52144e417f3dd3a3 /source | |
| parent | 7e71dcc4176440dd1894a2f60e28d85b1b494ec3 (diff) | |
fixed setting of shortMemoryStatus in MemoryControl
Diffstat (limited to 'source')
4 files changed, 15 insertions, 8 deletions
diff --git a/source/net/yacy/kelondro/util/GenerationMemoryStrategy.java b/source/net/yacy/kelondro/util/GenerationMemoryStrategy.java index 508897d94..49b7ae407 100644 --- a/source/net/yacy/kelondro/util/GenerationMemoryStrategy.java +++ b/source/net/yacy/kelondro/util/GenerationMemoryStrategy.java @@ -29,6 +29,7 @@ import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.lang.management.MemoryPoolMXBean; import java.lang.management.MemoryUsage; +import java.util.concurrent.atomic.AtomicBoolean; public class GenerationMemoryStrategy extends MemoryStrategy { @@ -102,11 +103,11 @@ public class GenerationMemoryStrategy extends MemoryStrategy { * @param force specifies whether ignoring preferred size * @return whether enough memory could be freed (or is free) or not */ - protected final boolean request(final long size, final boolean force, boolean shortStatus) { + protected final boolean request(final long size, final boolean force, AtomicBoolean 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) final boolean unknown = size < 0l; // size < 0 indicate an unknown size - maybe from gziped streams - final boolean r = unknown? properState(force) : size < available(force); - shortStatus = !r; + final boolean r = unknown ? properState(force) : size < available(force); + shortStatus.set(!r); return r; } diff --git a/source/net/yacy/kelondro/util/MemoryControl.java b/source/net/yacy/kelondro/util/MemoryControl.java index 09b2c18dc..6dae52721 100644 --- a/source/net/yacy/kelondro/util/MemoryControl.java +++ b/source/net/yacy/kelondro/util/MemoryControl.java @@ -26,13 +26,15 @@ package net.yacy.kelondro.util;
import java.lang.management.ManagementFactory;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* Use this to get information about memory usage or try to free some memory
*/
public class MemoryControl {
- private static boolean shortStatus = false, simulatedShortStatus = false, usingStandardStrategy = true;
+ private static AtomicBoolean shortStatus = new AtomicBoolean(false);
+ private static boolean simulatedShortStatus = false, usingStandardStrategy = true;
private static MemoryStrategy strategy;
private static MemoryStrategy getStrategy() {
@@ -145,7 +147,7 @@ public class MemoryControl { */
public static boolean shortStatus() {
//if (shortStatus) System.out.println("**** SHORT MEMORY ****");
- return simulatedShortStatus || shortStatus;
+ return simulatedShortStatus || shortStatus.get();
}
/**
diff --git a/source/net/yacy/kelondro/util/MemoryStrategy.java b/source/net/yacy/kelondro/util/MemoryStrategy.java index 4d68b3863..72fb9172a 100644 --- a/source/net/yacy/kelondro/util/MemoryStrategy.java +++ b/source/net/yacy/kelondro/util/MemoryStrategy.java @@ -25,6 +25,8 @@ package net.yacy.kelondro.util; +import java.util.concurrent.atomic.AtomicBoolean; + import net.yacy.cora.util.ConcurrentLog; public abstract class MemoryStrategy { @@ -115,7 +117,7 @@ public abstract class MemoryStrategy { * @param force specifies whether a GC should be run even in case former GCs didn't provide enough memory * @return whether enough memory could be freed (or is free) or not */ - protected abstract boolean request(final long size, final boolean force, boolean shortStatus); + protected abstract boolean request(final long size, final boolean force, AtomicBoolean shortStatus); /** * @return if Memory seams to be in a proper state diff --git a/source/net/yacy/kelondro/util/StandardMemoryStrategy.java b/source/net/yacy/kelondro/util/StandardMemoryStrategy.java index 39c70e168..cab62b73e 100644 --- a/source/net/yacy/kelondro/util/StandardMemoryStrategy.java +++ b/source/net/yacy/kelondro/util/StandardMemoryStrategy.java @@ -25,6 +25,8 @@ package net.yacy.kelondro.util; +import java.util.concurrent.atomic.AtomicBoolean; + import net.yacy.cora.util.Memory; /** @@ -146,10 +148,10 @@ public class StandardMemoryStrategy extends MemoryStrategy { * @return whether enough memory could be freed (or is free) or not */ @Override - protected boolean request(final long size, final boolean force, boolean shortStatus) { + protected boolean request(final long size, final boolean force, AtomicBoolean shortStatus) { if (size <= 0) return true; final boolean r = request0(size, force); - shortStatus = !r; + shortStatus.set(!r); return r; } private boolean request0(final long size, final boolean force) { |
