Извлечение дампа hashmap из памяти для процесса Java - PullRequest
0 голосов
/ 25 февраля 2012

У меня Java-процесс , который работает более недели. В процессе я обрабатывал некоторые данные и сохранял некоторый промежуточный результат в хэш-карту в памяти.

Теперь мне нужно остановить процесс из-за некоторых ошибок в коде. Но если я убью процесс, то я потеряю данные в хэш-карте, и мне придется заново обрабатывать их, когда я в следующий раз запущу код.

Это способ, которым я могу получить дамп хеш-карты , присутствующий в памяти?

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

Вы можете запустить дамп памяти, который вы можете прочитать с помощью различных инструментов, таких как профилировщики.Это очень трудно прочитать, и я никогда не слышал, чтобы кто-то использовал это для перезапуска программы.

Перезапуск программы - это не то, что вы можете сделать в качестве запоздалой мысли, она должна быть встроена в ваше приложение и тщательно протестирована.,Один из способов решить эту проблему - использовать базу данных.Это потому, что базы данных, разработанные и протестированные профессионально, должны быть перезапущены без потери данных.

0 голосов
/ 26 февраля 2012

Вы можете использовать JConsole, который входит в стандартный JDK, или visualvm , чтобы присоединиться к уже запущенному процессу и вызвать дамп кучи.

Однако, как сказал Питер, на самом деле чтение этой свалки не будет увлекательным, если вы не найдете инструмент, который поможет вам.

...