2016-02-22 1 views
1

В дополнение к информации в дампе кучи мне также нужно получить информацию о потенциальных тегах, установленных объектом через JVMTI. В идеале эти значения должны храниться непосредственно в дампе кучи вместе с остальной информацией экземпляра, но это, похоже, не поддерживается. Или кто-нибудь знает дорогу?Теги JVMTI в HeapDump или отдельный файл сопоставления

В качестве альтернативы я думал о файле сопоставления, который содержит метки, сопоставленные с соответствующими идентификаторами объектов из дампа кучи (которые, если я не ошибаюсь, являются адресами памяти объектов во время создания дампа) , Если бы VM остановилась, я мог бы, возможно, создать создание дампа, пометить объекты и записать это сопоставление, прежде чем позволить VM продолжить работу. Пока это не лучший подход. Любые другие идеи?

Любая идея о том, как и где я мог получить доступ к информации тега, отличной от метода jvmtis getTag (object)?

ответ

0

Вы должны проверить в документации:

Теги являются локальными для окружающей среды (JVMTI); т. е. теги одной среды не видны в другом.

Таблицей сопоставления будет ваш лучший выбор.

+0

Спасибо за ваш ответ. Совершенно верно. Я надеялся на что-то, что я наблюдал. Идея с таблицей сопоставления может также иметь проблему. Вся операция (1. пометить объекты, 2. создать дамп кучи, а затем 3. создать файл сопоставления) не будет атомарным. Теоретически объекты могут перемещаться в памяти между 2 и 3, я боюсь. Вы знаете, как предотвратить это? Я определенно могу приостановить все потоки, но это не помешает GC перемещать вещи (хотя новый мусор не будет создан). –

+0

Поскольку я не могу сделать все это в одном из обратных вызовов при повторении через кучу (которые гарантируют, что во время выполнения этих функций состояние кучи не изменится), я не уверен, насколько надежным будет файл сопоставления. –

+0

Что вы хотите достичь? Я думаю, это вопрос о том, сходите ли вы по правильному пути. Если да, то следуйте за ней до ее вывода независимо от «хаков», необходимых. В противном случае может быть другой выбор. –

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