64-Bit-Java-VM führt die App 10-mal langsamer aus

8

Ich habe eine Java-App, die mit JarBundler verpackt ist. Die App ist ziemlich CPU-intensiv (viele große Collection.sort () Anrufe).

Unter Mac OS läuft die App langsam und träge, wenn Sie den 64-Bit-JavaApplicationStub verwenden. Diese JavaApplicationStub-Datei startet die Java 64-Bit-VM.

Ich habe eine alte JavaApplicationStub-Datei gefunden, die nur 32-bit ist. Ich ersetzte es im Bundle, und die App läuft 10x schneller! (Folglich wird die 32-Bit-VM verwendet, wenn die Anwendung ausgeführt wird).

Macht das irgendeinen Sinn? Warum ist die 64-Bit-VM so viel langsamer? Ist es sinnvoll, eine App zu erstellen und die JavaApplicationStub-Datei so zu hacken?

Beratung ist willkommen.

    
craiglurey 02.12.2009, 17:45
quelle

2 Antworten

5

Siehe diesen Beitrag zu den Vorteilen / Nachteilen einer 64-Bit-JVM. Zusammenfassend, Zeiger-Dereferenzierung & amp; Die Speicher-De-Allocation kann länger dauern - und Sie bewegen sich in größeren Datenstrukturen (d. h. 64, nicht 32 Bit, was Ihnen keinen Vorteil bringt, es sei denn, Sie verwenden sie explizit).

Siehe auch diesen relevanten Artikel , in dem sie Leistungseinbußen von bis zu 85% beim Wechsel zu 64bit, was mit dem übereinstimmt, was Sie gerade erleben:

  

Der Grund für diesen Leistungsabfall ist eigentlich sehr viel mit dem Speicherzuwachs verbunden. Die Speicherreferenzen unter Java wurden doppelt so groß, wodurch die Größe von Speicherstrukturen in der WAS-Laufzeitumgebung und den Objekten Ihrer Anwendung erhöht wurde. Leider sind die Cache-Größen des Prozessorspeichers nicht gleichzeitig größer geworden. Dies bedeutet mehr Speicher-Cache-Fehler, was bedeutet, dass die Hardware, die mit dem größeren Speicher arbeitet, arbeitsintensiver ist, was eine schlechtere Anwendungsleistung bedeutet.

    
Joel 02.12.2009 17:52
quelle
-1

64 Bit ist nicht langsamer. Probieren Sie:

%Vor%

}

in 32 und 64 und sagen Sie uns, welche Ergebnisse Sie erhalten

    
larsolsen 27.01.2014 22:05
quelle

Tags und Links