/ / Má JVM príznaky optimalizácie špecifické pre stroj? - java, jvm, generovanie kódu

Má JVM príznaky optimalizácie špecifické pre stroj? - java, jvm, generovanie kódu

Chápem, že JVM interpretuje / JITsbytecodes; a že JVM poskytuje funkčnosť generovania kódu stroja (a dobu behu), ktorá je špecifická pre platformu, pre spustenie programu v aktuálnom kontexte.

Chcela by som pochopiť, aké možnosti ladenia generácie kódov sú dostupné v JVM. Narazil som https://docs.oracle.com/cd/E21764_01/web.1111/e13814/jvm_tuning.htm#PERFM167, ktoré sú vlastne len vlajkami na ladenie runtime JVM.

Mám záujem dozvedieť sa, či JVM umožňuje ladenie možností generovania kódu pre konkrétnu platformu, podobne ako gcc na x86 https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html#x86-Options.

odpovede:

1 pre odpoveď č. 1

Po prvé, vlajky JVM sú v podstateodlišné od príznakov optimalizácie GCC.Vlajky GCC ovplyvňujú kód vygenerovaný v čase kompilácie JVM možnosti (v rozsahu, v akom ovplyvňujú kompiláciu JIT vôbec) NIEKTORÝ vplyv na bytecode.

Existujú rôzne príznaky, ktoré ovplyvňujú natívny kód vysielaný kompilátorom JIT; napríklad:

  • Na -ea možnosti určujú, či tvrdenia sú kontrolované.
  • Na -server voľba (čiastočne) určuje, kedy kód je kompilátor JIT, ktorý ovplyvňuje jeho optimalizácia.Na -Xcomp možnosť robí to isté.
  • Na -Xint a -Xmixed ovplyvniť, či kód je JIT zostavil vôbec.

Potom tam sú možnosti, ktoré špecificky zmeniť špecifické optimalizácia-súvisiace veci.Tieto zahŕňajú -XX:ObjectAlignmentInBytes, -XX:CompressedOops, -XX:AggressiveOpts, -XX:AllocatePrefetch možnosti, -XX:DoEscapeAnalysis, -XX:Inline možnosti, -XX:OptimizeStringConcat, -XX:UseAES Možnosti a -XX:UseSHA možnosti.

Podrobnejší zoznam nájdete v dokumentácii Oracle pre svoju platformu.

Poznač si to:

  • Všetky optimalizácia kódu JIT je platformovo závislé v tom zmysle, že optimzes kompilátor JIT pre hardvér, ktoré sú skutočne beží na.
  • Niektoré z vyššie uvedených možností sú platformovo závislé (pozri dokumentáciu)
  • Na -X a -XX možnosti zmeniť medzi Java verzie.
  • Java programátori zvyčajne nechal platformy vyberte optimalizácia nastavenia.Na rozdiel od (povedzme) C alebo C , Java programy sú zvyčajne menej citlivé na optimalizáciu nastavenia1.

1 - na singel-závitové Java kódu, optimalizácia nastavenia by nemali zmeniť správanie programu.Multi-závitové kódu, správanie nesprávny Aplikácia môže meniť v dôsledku nedostatočné synchronizácie.