2016-09-13 4 views
0

Gibt es irgendwelche Leistungseinbußen, wenn Sie einen Java-Prozess mit Remote-Debugging über jdwp/socket aktiviert und kein externer Prozess verbindet verbindet? Ich verstehe, dass es einen signifikanten Treffer gibt, wenn ein Remote-Client tatsächlich debuggt, aber wenn ich einfach jdwp an einem bestimmten Port deklariere, wird das allein die App verlangsamen? Alle Links zur Dokumentation würden sehr geschätzt werden.Java Remotedebugging - Leistung

Antwort

1

Nein, indem Sie nur den Debugging-Port aktivieren, hat keinen Einfluss auf die Laufzeitleistung, solange kein externer Prozess eine Verbindung herstellt.

JDWP ist das Protokoll für die Kommunikation zwischen einem Debugger und der Java Virtual Machine (VM), die debuggt. JDWP ist optional.

JDWP Start Up - Nachdem die Transportverbindung wird aufgebaut, bevor irgendwelche Pakete gesendet werden, wird ein Handshake tritt zwischen den beiden Seiten der Verbindung:

Das Handshake-Verfahren hat die folgenden Schritte:

  1. Die Debugger-Seite sendet 14 Byte an die VM-Seite, bestehend aus den 14 ASCII-Zeichen der Zeichenfolge "JDWP-Handshake".
  2. Die Seiten VM Antworten mit dem gleichen 14 Bytes: JDWP-Handshake

In Java SE 1.4 die Java HotSpot Virtual Machine verwendet jetzt "Full-Speed-Debugging"

In der vorherige Version HotSpot, wenn das Debugging aktiviert wurde, wurde das Programm nur mit dem Interpreter ausgeführt. Jetzt ist der volle Leistungsvorteil der HotSpot-Technologie für Programme verfügbar, die mit aktiviertem Debugging laufen. Die verbesserte Leistung ermöglicht es, lange laufende Programme leichter zu debuggen. Es ermöglicht auch bei voller Geschwindigkeit ablaufen Tests und die Einführung eines Debuggers auf eine Ausnahme auftreten:

Weitere Details JDWP Verbesserungen in Bezug auf, bitte http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html

sehen