Ich habe einen interessanten Effekt in Bezug auf Laufzeitspeicheranalyse mit dem MemoryMXBean. Ich möchte den freien Speicher in Heap zusammen mit NonHeap ermitteln. So sieht mein Code wie folgt aus:Java MemoryMXBean Used Memory größer als Max
static MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
long fullused = mbean.getHeapMemoryUsage().getUsed() + mbean.getNonHeapMemoryUsage().getUsed();
long fullmax = mbean.getHeapMemoryUsage().getMax() + mbean.getNonHeapMemoryUsage().getMax();
long fullfree = fullmax - fullused;
Manchmal ist das Ergebnis für fullFree ein negativer Wert ist. Wie kann das sein? Eine Race-Bedingung, dass einige Garbage Collection nach der Berechnung für die verwendeten Mem gemacht wurde? In meinen Logbüchern sehe ich es oft, also bezweifle ich die Race-Condition-Theorie. Irgendwelche anderen Gedanken hier?
Danke, ich werde einen Check dafür einbauen. – magicroomy