Podczas wykonywania w jaki sposób program java może określić, ile pamięci używa?Podczas wykonywania w jaki sposób program java może określić, ile pamięci używa?
Nie obchodzi mnie, jak wydajna jest!
Podczas wykonywania w jaki sposób program java może określić, ile pamięci używa?Podczas wykonywania w jaki sposób program java może określić, ile pamięci używa?
Nie obchodzi mnie, jak wydajna jest!
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.
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)
(ilustracje nie są wyświetlane w tej chwili, więc proszę dotyczy Monitoring an application na ilustracji).
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
java.lang.Runtime.totalMemory() daje wymagane informacje - http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html
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.
Masz rację (moją pierwszą reakcją było monitorowanie z zewnątrz), +1 do ciebie;) – VonC
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
@ paulpaul1076: Byłoby lepiej zadać nowe pytanie. –