0
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 によって最適化されるのを防ぐには?

4

1 に答える 1

0

たとえばint、クラスのどこかに偽の変数を作成し、メソッドとメソッドMarkerでその値をインクリメント/デクリメントすることができます。値がどこにも使用されていなくても、オプティマイザーがクラスからインスタンスフィールドを削除できるとは思いません。結局のところ、誰かがいつでも新しいエージェント コードを JVM に挿入し、値を求めることができます。これは、呼び出しも最適化されるべきではないことを意味します。start()end()start()stop()

于 2012-06-01T12:21:08.370 に答える