У меня есть куча кучи 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. Даже это не совсем работает, поскольку оно находит объекты, непосредственно привязанные к таблице, а не цепочки объектов. В любом случае, я чувствую, что делаю это сложнее, чем нужно, - я бы подумал, что есть простой способ сделать это.
Этот вопрос может быть полезен? http://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps – geert3
@ geert3 - Итак, я проверил это, и MAT может это сделать. В нем есть куча помощников для коллекций Java. Спасибо за совет! – paj28