Как предотвратить оптимизацию мертвого кода с помощью JVM?

public class A
{
    public String getText()
    {
        Marker.start();
        ...
        ...
        Marker.end();
    }
}

public class Marker
{
    public static void start()
    {
        long now = System.currentTimeMillis;
    }

    public static void end()
    {
        long now = System.currentTimeMillis;
    }
}

Я хочу использовать JPDA (Java Platform Debugger Architecture) для обнаружения вхождения Marker.start() и Marker.end() из внешнего приложения. Однако я думаю, что код может быть оптимизирован / устранен с помощью JVM. Как предотвратить оптимизацию мертвого кода с помощью JVM?

1 ответ

Вы могли бы, например, создать подделку int переменная где-то в классе Marker и увеличивать / уменьшать его значение в start() а также end() методы. Я не думаю, что какой-либо оптимизатор мог бы удалить поле экземпляра из класса, даже если значение нигде не используется. В конце концов, кто-то всегда может внедрить новый код агента в JVM и запросить значение. Это означает призывы к start() а также stop() не должен быть оптимизирован, либо.

Другие вопросы по тегам