2016-03-14 2 views
1

У меня есть куча кучи Java, сгенерированная с помощью jmap. Это содержит HashMap, который мне нужно извлечь в текстовый формат (CSV будет в порядке). HashMap довольно большой, поэтому мне нужно создать сценарий.Как извлечь HashMap из дампа кучи Java

Использование JVisualVM Я могу найти HashMap. Однако, похоже, не существует способа экспортировать свои данные. После нескольких экспериментов я работать этот OQL запрос:

select map(filter(heap.findObject("0x12345678"), 'it != null'), function(it) { return {"id": it.key.value, "value": it.value.value}; }) 

Где 0x12345678 является идентификатором объекта массива таблицы внутри HashMap. Даже это не совсем работает, поскольку оно находит объекты, непосредственно привязанные к таблице, а не цепочки объектов. В любом случае, я чувствую, что делаю это сложнее, чем нужно, - я бы подумал, что есть простой способ сделать это.

+0

Этот вопрос может быть полезен? http://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps – geert3

+0

@ geert3 - Итак, я проверил это, и MAT может это сделать. В нем есть куча помощников для коллекций Java. Спасибо за совет! – paj28

ответ

1

Очевидно, что есть инструмент Eclipse (автономный, а также плагин): Memory Analyzer (MAT), возможно, который предлагает больше вариантов экспорта. См. http://www.eclipse.org/mat

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