Skip to content

Commit 06f0010

Browse files
committed
Adds Helper#getUsedMBAfterGC.
1 parent 4953350 commit 06f0010

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

api/src/main/java/com/graphhopper/util/Helper.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
import com.graphhopper.util.shapes.BBox;
2121

2222
import java.io.*;
23+
import java.lang.management.GarbageCollectorMXBean;
24+
import java.lang.management.ManagementFactory;
2325
import java.nio.ByteBuffer;
2426
import java.nio.MappedByteBuffer;
2527
import java.nio.charset.Charset;
@@ -174,6 +176,29 @@ public static String getMemInfo() {
174176
return "totalMB:" + getTotalMB() + ", usedMB:" + getUsedMB();
175177
}
176178

179+
public static int getUsedMBAfterGC() {
180+
long before = getTotalGcCount();
181+
// trigger gc
182+
System.gc();
183+
while (getTotalGcCount() == before) {
184+
// wait for the gc to have completed
185+
}
186+
long result = (ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed() +
187+
ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage().getUsed()) / (1024 * 1024);
188+
return (int) result;
189+
}
190+
191+
private static long getTotalGcCount() {
192+
long sum = 0;
193+
for (GarbageCollectorMXBean b : ManagementFactory.getGarbageCollectorMXBeans()) {
194+
long count = b.getCollectionCount();
195+
if (count != -1) {
196+
sum += count;
197+
}
198+
}
199+
return sum;
200+
}
201+
177202
public static int getSizeOfObjectRef(int factor) {
178203
// pointer to class, flags, lock
179204
return factor * (4 + 4 + 4);

0 commit comments

Comments
 (0)