2008-10-27 15 views

Odpowiedz

30

odpowiedź VonC jest interaktywnym rozwiązaniem - jeśli chcesz wiedzieć, programowo, można użyć Runtime.totalMemory() aby dowiedzieć się całkowitą ilość używanego przez JVM, a Runtime.freeMemory(), aby dowiedzieć się, ile to jest nadal dostępna (tzn to przydzielone do JVM, ale nie przydzielono w ramach JVM - nowe obiekty mogą korzystać z tej pamięci).

Są to metody instancji - należy użyć Runtime.getRuntime(), aby najpierw uzyskać instancję singleton.

+0

Masz rację (moją pierwszą reakcją było monitorowanie z zewnątrz), +1 do ciebie;) – VonC

+0

Jon Skeet, witam, czy możesz mi powiedzieć, jak zrobić to samo dla C#? w java odejmowałbym darmo od całości, prawda? I w C# znalazłem tylko PrivateMemorySize64 w klasie Process, ale zakładam, że tylko daje całkowitą pamięć, prawda? – Pavel

+0

@ paulpaul1076: Byłoby lepiej zadać nowe pytanie. –

4

Jeśli masz java1.6 gdzieś i Twój program jest uruchomiony w java 1.4.2, 1.5 lub 1.6, można uruchomić visualVM session podłączyć do aplikacji, a następnie postępuj zgodnie z pamięci (i dużo więcej)

image of monitoring application with Visual VM

(ilustracje nie są wyświetlane w tej chwili, więc proszę dotyczy Monitoring an application na ilustracji).

+0

Dziękuję CMS, i dziękuję ci, którzy to wznawiali ... biorąc pod uwagę, że nie było to dokładnie to, czego żądał użytkownik;) – VonC

4

Nie będzie to dokładne, ale dla przybliżonego oszacowania wystarczy odjąć Runtime.getRuntime.freeMemory() od Runtime.getRuntime.totalMemory(). Zrób to na początku programu, aby uzyskać pojęcie o wykorzystaniu pamięci napowietrznej JVM's i w odstępach czasu ostatnich w wykonaniu.

Powiązane problemy