Руководство по устранению неполадок для Java SE 6 с Hotspot VM содержит довольно сложный раздел, посвященный методам, помогающим обнаруживать утечки памяти.К ним относятся:
- упаковка всех вызовов выделения и освобождения памяти для отслеживания объема используемой памяти.
- полагаясь на поддержку конкретной платформы, такую как поддержка отладки, предоставляемая компилятором Microsoft Visual C ++, илина mtrace (и MALLOC_TRACE) для отладки выделения памяти в Linux.
- с использованием таких инструментов анализа утечек памяти, как Rational Purify.
и других.В частности, в статье упоминается, что не существует идеального решения для всех платформ.
Кроме того, рассмотрите возможность использования флага -Xcheck:jni
, который, по-видимому, доступен в большинстве JVM.Сам флаг -X
указывает, что этот флаг нестандартный, но этот флаг, по-видимому, доступен в IBM JDK , Oracle JRockit R28 и даже в Oracle / Sun JVM,Включение флага включает режим, в котором обертки добавляются к вызовам JNI, что позволяет отслеживать недопустимые аргументы, передаваемые вызовам JVM, как указано в руководстве и спецификации для программистов JNI .Хотя его использование при обнаружении утечек памяти носит субъективный характер, оно определенно поможет, если вы подозреваете, что утечка вызвана неправильными параметрами.