diff --git a/pom.xml b/pom.xml
index 781b26ef9..694cf1954 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.tonikelope
MegaBasterd
- 6.42
+ 6.43
jar
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
index a2aaaab0b..f922ba4e9 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
@@ -50,7 +50,7 @@ import javax.swing.UIManager;
*/
public final class MainPanel {
- public static final String VERSION = "6.42";
+ public static final String VERSION = "6.43";
public static final int THROTTLE_SLICE_SIZE = 16 * 1024;
public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024;
public static final int STREAMER_PORT = 1337;
@@ -183,6 +183,7 @@ public final class MainPanel {
private boolean _megacrypter_reverse;
private float _zoom_factor;
private volatile boolean _exit;
+ private volatile boolean _forcing_gc;
public MainPanel() {
@@ -376,6 +377,8 @@ public final class MainPanel {
Runtime instance = Runtime.getRuntime();
+ _forcing_gc = false;
+
while (true) {
long used_memory = instance.totalMemory() - instance.freeMemory();
@@ -392,19 +395,49 @@ public final class MainPanel {
}
});
- } else {
- Logger.getLogger(MainPanelView.class.getName()).log(Level.INFO, "Forcing garbage collection...");
+ } else {
swingInvoke(new Runnable() {
@Override
public void run() {
- _view.getMemory_status().setText("---------");
+ _view.getMemory_status().setText("(!) " + MiscTools.formatBytes(used_memory) + " / " + MiscTools.formatBytes(max_memory));
}
});
- MiscTools.force_garbage_collection();
+ if (!_forcing_gc) {
+ _forcing_gc = true;
+
+ THREAD_POOL.execute(new Runnable() {
+ @Override
+ public void run() {
+
+ long used_memory = instance.totalMemory() - instance.freeMemory();
+
+ long max_memory = instance.maxMemory();
+
+ while (used_memory >= ((double) max_memory) * 0.7) {
+
+ Logger.getLogger(MainPanelView.class.getName()).log(Level.INFO, "Forcing garbage collection...");
+
+ MiscTools.force_garbage_collection();
+
+ try {
+ Thread.sleep(15000);
+ } catch (InterruptedException ex) {
+ Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ used_memory = instance.totalMemory() - instance.freeMemory();
+
+ max_memory = instance.maxMemory();
+ }
+
+ _forcing_gc = false;
+ }
+ });
+ }
}
try {
diff --git a/src/main/resources/images/mbasterd_screen.png b/src/main/resources/images/mbasterd_screen.png
index 643c78ef4..d830f6113 100644
Binary files a/src/main/resources/images/mbasterd_screen.png and b/src/main/resources/images/mbasterd_screen.png differ