2017-10-22 2 views
0

Ich weiß, das öffnet Ihre Anwendung oder IDE, um mit der JVM zu interagieren, indem Sie Haltepunkte im Quellcode platzieren, aber ändert sich etwas in der JVM. I.e. Läuft der JVM langsamer (wenn es keine Breakpoints gibt), läuft der JVM anders und ich frage mich, was dieses Flag intern mit der JVM macht.Was ändert das `-jvm-debug 5005` in der JVM genau?

Antwort

2

Diese Option wird aktiviert JDWP agent library. Diese Bibliothek, die ein JVM TI Agent ist, ermöglicht viele (wenn nicht alle) JVM TI capabilities. Einige Funktionen sind harmlos, einige haben jedoch Auswirkungen auf die Leistung.

Zum Beispiel deaktiviert can_access_local_variables Fähigkeit Escape-Analyse machen bestimmte Optimierungen (wie Zuteilung Beseitigung) unmöglich. can_pop_frame und can_force_early_return Funktionen fügen einige zusätzliche Prüfungen hinzu, wenn Interpreter in VM aufruft. can_generate_method_entry_events fügt einen zusätzlichen Check im Interpreter für jeden Methodeneintrag hinzu und so weiter.

Also, ja, der Agent fügt einige Overhead (obwohl nicht zu groß), auch wenn der Debugger nicht aktiv ist.

Verwandte Themen