summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorMichael Peter Christen <mc@yacy.net>2014-02-09 12:25:55 +0100
committerMichael Peter Christen <mc@yacy.net>2014-02-09 12:25:55 +0100
commitacc8d7faa7dd3a23ba04056b1beb554a56b98219 (patch)
treea83e4a8ed3e0f4c086c740ea52144e417f3dd3a3 /source
parent7e71dcc4176440dd1894a2f60e28d85b1b494ec3 (diff)
fixed setting of shortMemoryStatus in MemoryControl
Diffstat (limited to 'source')
-rw-r--r--source/net/yacy/kelondro/util/GenerationMemoryStrategy.java7
-rw-r--r--source/net/yacy/kelondro/util/MemoryControl.java6
-rw-r--r--source/net/yacy/kelondro/util/MemoryStrategy.java4
-rw-r--r--source/net/yacy/kelondro/util/StandardMemoryStrategy.java6
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) {