2015-08-17 2 views
2

Я пытаюсь проанализировать проблему, используя кучу кучи OOME, для этого я использую MAT. Я прочитал о том, как использовать MAT here.Анализ кучи дампа для ошибки из памяти

Это веб-приложение, которое развертывается на сервере tomcat и использует весну и спящий режим. Когда я вижу дерево доминанта для дампа, я могу видеть только объекты спящего режима, означает ли это, что утечка памяти вызвана тем, что мой спящий режим держит объекты в памяти, или я чего-то здесь не вижу?

Ниже приводится скриншот доминантного дерева. enter image description here

+0

Действительно вы уверены, что это действительно утечка? может быть, это просто недостаточно памяти. Глядя на диаграммы недостаточно, чтобы понять причину утечки - вам нужно найти объекты, которые не были собраны мусором, но должны быть, и понять, кто держит ссылку на них и почему. –

+0

Я не уверен на 100%, но похоже, что это утечка, так как, когда я проверяю этот объект внутри карты спящего режима, он содержит данные, которые я использую, когда мне нужно вставлять в БД, что выполняется конкретным поток и не очень распространен. – rd22

ответ

0

пытаются использовать jvisualvm профилировщика с поддержкой «записей трассировки стека выделения» вариант, чтобы найти, где эти объекты создаются, то вы можете проанализировать, где вы храните его ...

2

Из образа, что у вас есть мы не можем прийти к выводу, что есть утечка памяти, и объект, который показан, является причиной утечки памяти.

В основном объект получает мусор, собранный JVM, если на него не ссылается какой-либо другой объект. Утечка памяти - это ситуация, когда объект, который больше не будет логически полезен, но останется в памяти из-за нежелательной ссылки другим объектом в памяти.

Если вы пытаетесь протестировать утечку памяти в своем приложении, все, что вам нужно сделать, это определить объект, который накапливается в куче каждый раз, когда вы обращаетесь к приложению. Чтобы эффективно идентифицировать объекты сначала взять и начальную кучу. Затем выполните некоторые действия в своем приложении. Затем оставьте приложение так, чтобы произошло GC, а затем свалили кучу. Инструмент предоставляет возможность сравнивать кучи кучи, которые будут идентифицировать объект, который резко увеличился с дампа базы. Затем вы можете просверлить объект, чтобы определить, кто держит ссылку на этот объект.

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