vm size (диспетчер задач) и java-приложение размера кучи - PullRequest
1 голос
/ 12 июля 2011

Я хочу найти утечку памяти в приложении Java 1.5.Я использую JProfiler для профилирования.С помощью диспетчера задач Windows я вижу, что размер виртуальной машины для моего приложения составляет около 790000 КБ (увеличено с 300 000 КБ).В профилировщике я вижу, что выделенная куча составляет 266 МБ (также увеличивается).

Вероятно, это вопрос новичка, но что еще может занимать так много памяти, кроме кучи, чтобы он достигал размера приблизительно 700 МБ виртуальной машины (или размера частных байтов)?около 1200 потоков, которые могут занимать, согласно ответу от здесь довольно много памяти, но я думаю, что до 700 МБ еще есть место.Кстати, как я могу увидеть, сколько памяти занимают стеки потоков?

Спасибо.

1 Ответ

0 голосов
/ 12 июля 2011

JVM может использовать много виртуальной памяти, которая может не использовать резидентную память. При запуске он выделяет кучу и отображает в своих общих библиотеках. Загружаемые классы используют пространство Perm Gen. Приложение может использовать прямую память, которая может достигать максимума кучи. По мере создания каждого потока для каждого потока выделяется стек. В каждом случае, пока эта память не используется, она может не выделяться приложению, то есть не использовать физическую память. По мере прогрева приложения больше виртуальной памяти может стать физической памятью.

Если вы считаете, что ваша JVM работает неэффективно, первое, что я бы попробовал - это Java 6, в которой было много исправлений и улучшений со времени последнего выпуска Java 5.0.

...