Śledzenie użycia pamięci
Pracujesz nad aplikacją do przetwarzania danych, która operuje na dużych kolekcjach obiektów. Zaimplementuj narzędzie do monitorowania pamięci, które pomoże śledzić jej zużycie podczas krytycznych operacji i zapobiegnie wyjątkom OutOfMemoryError.
To ćwiczenie jest częścią kursu
Optymalizacja kodu w Javie
Instrukcje do ćwiczenia
- Pobierz bieżącą instancję środowiska uruchomieniowego JVM.
- Korzystając z całkowitej pamięci i wolnej pamięci środowiska uruchomieniowego, oblicz aktualnie używaną pamięć.
- Wywołaj metodę pobierającą używaną pamięć w megabajtach.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
public class Main {
public static double getUsedMemoryMB() {
// Retrieve the JVM runtime instance
Runtime runtime = ____.____()
// Calculate the current used memory
long usedMemoryBytes = runtime.____() - runtime.____();
return usedMemoryBytes / (1024.0 * 1024.0);
}
public static void main(String[] args) {
double memoryBefore = getUsedMemoryMB();
System.out.println("Memory before array creation: " + memoryBefore + " MB");
int size = 10_000_000;
double[] largeArray = new double[size];
for (int i = 0; i < size; i++) {
largeArray[i] = Math.sqrt(i);
}
// Get the currently used memory in megabytes
double memoryAfter = ____();
System.out.println("Memory after array creation: " + memoryAfter + " MB");
System.out.println("Memory used by array creation: " + (memoryAfter - memoryBefore) + " MB");
}
}