Muszę sprawdzić zużycie procesora i pamięci dla serwera w Javie, ktoś wie, jak to zrobić?
java
operating-system
cpu
ram
Johnny Bou
źródło
źródło
Odpowiedzi:
Jeśli szukasz konkretnie pamięci w JVM:
Należy je jednak traktować tylko jako szacunki ...
źródło
źródło
freeMemory
tutaj zwraca ilość pamięci dostępnej w JVM, która jest bardzo różnaJeśli korzystasz z maszyny JVM firmy Sun i interesuje Cię użycie pamięci wewnętrznej aplikacji (ile z przydzielonej pamięci wykorzystuje Twoja aplikacja), wolę włączyć wbudowane rejestrowanie pamięci masowej JVM. Po prostu dodajesz -verbose: gc do polecenia startowego.
Z dokumentacji Sun:
Więcej informacji można znaleźć pod adresem: http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html
źródło
od tutaj
źródło
operatingSystemMXBean.getProcessCpuLoad();
? Zgodnie z dokumentacją Oracle ta metoda zwraca „Zwraca„ ostatnie użycie procesora ”dla procesu wirtualnej maszyny języka Java. Jednak widzę stosunkowo dużą różnicę liczbową między Twoją metodą a tą metodą.OperatingSystemMXBean
klasy. Jednym z nich jest interfejs udostępniony w programiejava.lang
. Ale jest też inna wersja, która rozszerza tę wersjęcom.sun.management
. To metoda, o której mówiłem, pochodzi z tegoOperatingSystemMXBean
JMX, MXBeans (ThreadMXBean itp.) Zapewnią wykorzystanie pamięci i procesora.
źródło
W przypadku użycia pamięci będą działać następujące elementy:
Aby zmierzyć zużycie procesora, musisz użyć zewnętrznej aplikacji.
źródło
Od wersji Java 1.5 JDK jest dostarczany z nowym narzędziem: JConsole, które może pokazać użycie procesora i pamięci dowolnej JVM 1.5 lub nowszej. Może tworzyć wykresy tych parametrów, eksportować do CSV, pokazywać liczbę załadowanych klas, liczbę instancji, zakleszczeń, wątków itp.
źródło
Jeśli korzystasz z rozwiązania runtime / totalMemory, które zostało opublikowane w wielu odpowiedziach tutaj (zrobiłem to dużo), pamiętaj, aby najpierw wymusić dwa operacje czyszczenia pamięci, jeśli chcesz uzyskać dość dokładne / spójne wyniki.
Ze względu na wydajność Java zwykle pozwala na zapełnienie całej pamięci przez śmieci przed wymuszeniem GC, a nawet wtedy nie jest to zwykle pełna GC, więc wyniki dla runtime.freeMemory () zawsze znajdują się gdzieś pomiędzy "rzeczywistą" ilością wolnej pamięci a 0 .
Pierwsza GC nie dostanie wszystkiego, a większość.
Wynik jest taki, że jeśli po prostu wykonasz wywołanie freeMemory (), otrzymasz numer, który jest absolutnie bezużyteczny i różni się znacznie, ale jeśli najpierw zrobisz 2 gc, jest to bardzo wiarygodny wskaźnik. Powoduje to również DUŻO spowolnienie rutyny (prawdopodobnie sekundy).
źródło
Obiekt Java Runtime może raportować wykorzystanie pamięci maszyny JVM. Do zużycia procesora będziesz musiał użyć zewnętrznego narzędzia, takiego jak top Unix lub Windows Process Manager.
źródło
JConsole to łatwy sposób na monitorowanie działającej aplikacji Java lub skorzystanie z Profiler, aby uzyskać bardziej szczegółowe informacje o aplikacji. Lubię używać do tego programu NetBeans Profiler .
źródło
Oto prosty kod do obliczenia aktualnego zużycia pamięci w megabajtach:
źródło
Dodałbym również następujący sposób śledzenia obciążenia procesora:
Możesz przeczytać więcej tutaj
źródło
YourKit profilera Java jest doskonałym rozwiązaniem komercyjnym. Więcej informacji można znaleźć w dokumentacji dotyczącej profilowania procesora i pamięci .
źródło
Jeśli używasz Tomcata, wypróbuj Psi Probe , który pozwala monitorować zużycie pamięci wewnętrznej i zewnętrznej, a także wiele innych obszarów.
źródło
W przypadku Eclipse możesz użyć TPTP (Platforma narzędzi testowych i wydajnościowych) do analizy użycia pamięci i innych informacji
źródło