У меня большая утечка памяти в большом Java-приложении.Но утечка, кажется, не в самой памяти JVM (то есть: куча, eden, оставшийся в живых, код, perm_gen и т. Д.), Так как у меня не хватает этого типа памяти (то есть: она увеличивается во время использования,но, в конце концов, когда GC запускается, он возвращается обратно.
Моя проблема в том, что у меня не хватает системной памяти!Поэтому я отслеживаю / proc / smap и использую инструменты pmap, чтобы увидеть, что происходит.Например, записи 'so', 'tmp' и 'jar' остаются относительно стабильными и не увеличивают слишком много в отображаемых элементах, а также не увеличивают их отображаемый размер неожиданно (как и ожидалось).
Ночто со временем значительно увеличивается, так это количество отображаемых записей, которые НЕ назначены определенному пути.Со временем их становится все больше и больше, и они, похоже, не исчезают.
Я могу понять, что происходит, например, когда JVM отображает файл JAR, но что именно представляют собой эти сопоставления без путей?У кого-нибудь есть объяснение / пример?
Кроме того, кто-нибудь может подтвердить, что запись «[heap]» является фактической кучей кода JVM и не имеет ничего общего с пространством кучи XMM и XMS.
Я использую Java (TM) 2 Runtime Environment, Standard Edition (сборка 1.5.0_07-b03) в дистрибутиве Linux 2.6.16.