Как проверить, какой поток или объект еще используется или нет? - PullRequest
1 голос
/ 20 марта 2019

Может кто-нибудь сказать мне, как я могу видеть, какие действия / темы остаются активными и больше не вызываются моим приложением?

Например, если я открываю поток HTTP и затем не сбрасываю, а продолжаю открывать новые, используемая память будет продолжать увеличиваться до тех пор, пока GC не пройдет очистку. Можно ли каким-то образом увидеть, какие потоки или объекты и т. д. были сгенерированы и не используются в течение заданного времени x?

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

Я не знаю, может ли это помочь в этом анализе, но параметры gcc установлены на:

-Xms8g -Xmx8g -XX: PermSize = 1024 XX: MaxPermSize = 1024

Тарана машины - 18 г.

спасибо всем заранее

1 Ответ

0 голосов
/ 20 марта 2019

Чтобы проверить, используется ли еще объект, выполните полный сбор данных.Для этого действия нет короткого пути.

Вы не знаете, нужен ли объект, пока не будет выполнена сборка мусора.

используемая память будет продолжать работатьдо тех пор, пока GC не пройдет очистку.

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

ПРИМЕЧАНИЕ: Perm Gen был удален в Java 8, а с марта 2019 года только Java 12 имеет бесплатнуюобновления от Oracle, поэтому в какой-то момент нужно будет рассмотреть вопрос об обновлении.

...