2

Привет, дорогие разработчики,флуктуации использования памяти кучи Java

У меня проблема с использованием памяти кучи в моем приложении Java. Application сама просто принимает соединения Торцевые

Главная тема Я не следующий сценарий ничего (кроме статического экземпляра ExecutorService):

ServerSocketFactory serverFactory = ServerSocketFactory.getDefault(); 
ServerSocket server = serverFactory.createServerSocket(Configuration.port); 
for(;;) 
{ 
    Socket client = server.accept(); 
    Configuration.getExecutor().submit(new Client(client)); 
} 

Когда приложение запущено, оно должно блокировать цикл, пока кто-нибудь не подключается ... Что означает мой основной поток на состояние ожидания большую часть времени ...

проблема: Когда никто не подключен к серверу, использование динамической памяти колеблется (см скриншот ниже) Это означает, что есть утечка памяти? нет? Или это естественный способ поведения Java-приложения?

JConsole

Заранее спасибо ...

+2

Если произошла утечка памяти, использование будет ** увеличиваться **. – Kayaman

+1

Просто выглядит как нормальная деятельность GC для меня. Вы можете настроить агрессивность стратегии GC, используя различные аргументы JVM, но это выглядит нормально. Я бы просто пошел. –

+0

Спасибо за разъяснение @ Kayaman :) – JavaMachine

ответ

1

Если вы используете visualvm или jconsole или jmc для контроля использования кучи, в нем используются RMI и JMX, которые создают довольно много мусора. т. е. это ваш мониторинг, который это делает.

BTW, даже если у вас есть простая программа

System.in.read(); 

эти инструменты показывают, что мусор создается, но не вашей программой.

Я предлагаю вам попробовать использовать вместо

jps -lvm 

, чтобы получить идентификатор процесса или pid

jstat -gccause {pid} 10s 

контролировать использование памяти. Это также создает небольшое количество мусора намного меньше.

+0

Питер, разве вы не рекомендуете использовать приложение мониторинга на основе JMX/RMI? –

2

Это выглядит как-то становится сборщиком мусора. Помните, что на компьютере с реалистичной суммой основной памяти этот наклон появится в тысячу раз меньше. Я не думаю, что это стоит беспокоиться.

3

Использование вашей памяти колеблется между 0 и 20 МБ и не увеличивается. Нет утечки памяти или какой-либо причины, по которой вам следует обратить на это внимание.

Смежные вопросы