Мне нужно остановить процесс, вызвав конкретный метод для экземпляра данного класса. Процесс работает целый день, и если я его сильно закрою, я потеряю много работы. Из-за ошибки в API графический интерфейс неправильно подключен и не вызывает правильную функцию остановки. У меня есть интерактивный интерпретатор Java (Scala), поэтому, если бы я мог получить экземпляр процесса, я мог бы легко вызвать правильный метод.JVM - получить экземпляр класса в запущенной (неинструментарной) сессии
У меня нет сеанса отладки, нет com.sun.jdi. Я могу увидеть экземпляр в дампе трассировки стека, но StackTraceElement
не содержит фактических экземпляров, просто классов и номеров строк.
Есть ли какой-либо способ в проходящем сеансе без специального инструментария, чтобы получить этот экземпляр - через его класс через дамп потока?
AFAIK ...... нет. –
Вы можете использовать [Attach API] (http://docs.oracle.com/javase/8/docs/technotes/guides/attach/), чтобы принудительно загрузить агента в запущенную виртуальную машину, если вы находитесь на одна и та же машина. Если JVM не поддерживает это, шансы низкие ... – Holger
@Holger благодарит, что выглядит интересно. Я нахожусь в HotSpot, поэтому, полагаю, это сработает. У вас есть указатель на «пример вложения»? –