Какой java сборщик мусора мы должны использовать для весенней загрузки с java 11 и Ubuntu 18 - PullRequest
0 голосов
/ 14 апреля 2020

У нас есть 10 приложений весенней загрузки, которые работают на Ubuntu18 с 8 ГБ ОЗУ и Java 11.

Мы запускаем приложения, используя java сборщик мусора -XX: + UseSerialG C без ограничения пространства кучи.

Но через несколько дней память сервера полностью используется и сервер зависает.

Нужно ли ограничивать память кучи, если мы используем сборщик мусора?

Я пробовал и с другими сборщиками мусора, но ничего не работает, кроме + UseSerialG C.

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

UseSerialG C имеет значение «хорошо-i sh» (не хорошо!), Но будет блокировать. Используйте параллельный по крайней мере. Проверьте https://www.baeldung.com/jvm-garbage-collectors на наличие различий.

Тем не менее, другой сборщик мусора не сильно вам поможет, если у вас будет настоящая утечка памяти. Вы, вероятно, должны профилировать свои приложения, чтобы увидеть, какие экземпляры объектов не перерабатываются G C.

. Проверьте эту статью для Spring Boot: https://medium.com/illegalarguments/how-to-find-memory-leaks-in-spring-boot-592faf11d571

0 голосов
/ 14 апреля 2020

Если вы исчерпали кучу, вы исчерпали кучу. Ваш выбор сборщика мусора вам не поможет.

Любой сборщик мусора * попытается очистить как можно больше, когда вы исчерпали свою кучу, поэтому, если SerialG C не может освободить место, то ничего из других сборщиков смогут либо.

Возможно, у вас утечка памяти. Возьмите кучу свалок и посмотрите, что занимает больше всего места. Начните с низко висящих фруктов - тех, которые занимают больше всего места. Возможно, у вас есть коллекции, которые вы добавляете и никогда не удаляете. (для моих проектов Map обычно является наиболее распространенным виновником).

Подумайте периодически перезагружать сервер, если это возможно, чтобы полностью очистить все.


* хорошо, не совсем

...