Я бы сначала прикрепил инструмент профиля, чтобы сказать вам, что это за «объекты», которые занимают всю память.
Eclipse имеет TPTP,
или есть JProfiler
или JProbe.
Любой из них должен показывать, что куча объектов накапливается, и позволяет вам осмотреть его, чтобы увидеть, что находится в куче.
Затем найдите в базе кода, кто их создает.
Возможно, у вас есть объект кэша или дерева / карты с элементами, и вы реализовали только метод equals () для этих объектов, и вам нужно реализовать hashcode ().
Это может привести к тому, что карта / кеш / дерево будет становиться все больше и больше, пока оно не упадет.
Это всего лишь предположение.
JProfiler будет моим первым звонком
В Javaworld есть скриншот того, что находится в памяти ...
альтернативный текст http://www.javaworld.com/javaworld/jw-08-2003/images/jw-0822-profiler16.gif
И снимок экрана с созданием и очисткой кучи объектов (отсюда и край пилы)
альтернативный текст http://www.javaworld.com/javaworld/jw-08-2003/images/jw-0822-profiler19.gif
ОБНОВЛЕНИЕ ********************************************** ***
Хорошо, я бы посмотрел на ...
http://www -01.ibm.com / поддержка / docview.wss? UID = swg1PK38940
Использование кучи увеличивается со временем, что приводит к OutOfMemory
состояние. Анализ heapdump показывает, что следующее
объекты занимают все больше места:
40 543 128 [304] 47 класс
ком / IBM / wsspi / rasdiag / DiagnosticConfigHome
40,539,056 [56] 2 Java / утилита / Hashtable 0xa8089170
40 539 000 [2 064] 511 массив java / util / Hashtable $ Entry
6,300,888 [40] 3 java / util / Hashtable $ HashtableCacheHashEntry