У меня есть дамп кучи в формате PHD из IBM jvm, и я хочу проверить значения некоторых строк. С бинарными дампами hprof Sun JVM это возможно, но мне не удалось восстановить эту информацию из дампа IBM.
Я пробовал:
- Анализатор памяти Eclipse (0.8.0.200906170940) со средством чтения дампа кучи IBM DTFJ Portal (1.3.0.200903241644)
- IBM Support Assistant (3.1.0.00) с диагностикой дампа памяти для Java (2.0.0.3b)
- Запуск «строк» над файлом дампа
- Преобразование в текстовый дамп с помощью com.ibm.jvm.ras.findroots.PrintHeapdump из svcdump.jar, найденного в mdd4j (2.0.0.3b)
В анализаторе памяти Eclipse я могу просмотреть массив символов внутри строки, но все записи в массиве равны нулю. Я также не вижу никаких примитивных атрибутов на любых объектах.
IBM намекает, что хранит значения примитивных типов по адресу http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg21190476
Это стало возможным благодаря использованию класса Java DataOutputStream, который позволяет выводить примитивные типы данных Java в переносимом двоичном формате.
Я использую Java 5.0:
2XHOSLEVEL OS Level : AIX 5.3 2XHCPUS Processors - 3XHCPUARCH Architecture : ppc64 3XHNUMCPUS How Many : 8 1CIJAVAVERSION J2RE 5.0 IBM J9 2.3 AIX ppc64-64 build j9vmap6423-20070426 1CIVMVERSION VM build 20070420_12448_BHdSMr