JAVA կիրառական համակարգի 10 կարևոր JVM ընտրանքներ

Ծանոթացեք հիմնական JVM (Java վիրտուալ մեքենա) տարբերակներին `ավելի լավ կատարման և կարգաբերման համար.


Եթե ​​Java- ի ծրագրավորող կամ միջին ծրագրերի կառավարիչ եք, ապա պետք է իմանաք, թե JVM ընտրանքները ինչ նշանակություն ունեն իրենց կարևորության հետ միասին և ինչպես են դրանք ազդում ձեր դիմումի վրա: Եկեք պարզենք դրանք.

JVM ընտրանքների ակնարկ

Խոսելով JVM ընտրանքների մասին, ապա կան երեք տեսակի ընտրանքներ, որոնք կարող եք ներառել ձեր JVM, ստանդարտ, ոչ ստանդարտ և առաջադեմ տարբերակներ: Եթե ​​փորձեք առաջադեմ տարբերակ, միշտ օգտագործում եք տարբերակը -XX- ով: Նմանապես, եթե ոչ ստանդարտ տարբերակ եք օգտագործում, օգտագործում եք -X: Ստանդարտ ընտրանքները չեն նախընտրում որևէ տարբերակ.

Ո՞ր JVM տարբերակները օգտագործում են ձեր դիմումը?

Եթե ​​ծրագիրը գործարկվում է Linux- ով, կարող եք օգտագործել ps -ef | grep java ՝ Java- ի գործընթացը պարզելու և JVM- ի տարբերակները դիտելու համար ՝ որպես գործընթացի փաստարկներ: Եթե ​​Java- ի մեկից ավելի գործընթաց է ընթանում համակարգում, ապա գուցե պահանջվի գնալ ձեր Java հավելվածի համար եզակի հիմնաբառով:.

Եթե ​​ձեր փաստարկը շատ երկար է, ապա փորձեք օգտագործել ps-auxww, քանի որ այս հրամանը նույնպես ցույց կտա երկար փաստարկների ցուցակը.

JVM դրոշների ցուցակ ունենալուց հետո դուք կարող եք պատկերացում կազմել ցանկացած Java դիմումի վարքագծի վերաբերյալ, օրինակ ՝ Tomcat.

Java կույտի չափը

 -Xms – սահմանել նախնական Java կույտի չափը
-Xmx – սահմանեք Java կույտի առավելագույն չափը
-Xss – սահմանել java թեմայի կեռի չափը

-Xms – Այս ընտրանքն է սահմանել JVM- ի համար սկսած կույտի չափը, օրինակ, Xms2048m, ինչը նշանակում է, որ JVM- ի սկզբնական կույտը 2 GB է: Այնպես որ, երբ JVM- ն սկսվի, կույտային հիշողությունը կլինի այդ շատ մեծը: Զարմանալիորեն այո: Դա իրականացվում է գործարկման ընթացքում չափափոխումը կանխելու և JVM գործարկման ժամանակն ուժեղացնելու համար.

-Xmx – Այս տարբերակը սահմանում է JVM կույտի առավելագույն չափը, օրինակ, Xmx2048m, ինչը նշանակում է, որ JVM- ի առավելագույն կույտը կլինի միայն 2 GB:.

Ըստ էության միշտ կունենաք-Xmsand-Xmx միասին.

Սահմանեք կույտի տոկոսը

-XX. MaxHeapFreeRatio – GC- ից հետո ազատում է կույտի առավելագույն տոկոսը, որպեսզի չկրճատվի.

-XX. MinHeapFreeRatio – GC- ից հետո ազատում է կույտի նվազագույն տոկոսը `ընդլայնումից խուսափելու համար. կույտի օգտագործումը վերահսկելու համար կարող եք օգտագործել JCosole.

Միացնել դասի տվյալների փոխանակումը

Նշեք Xshareclasses- ի տարբերակը `դասի տվյալների փոխանակումը ընդհանուր դասի քեշի մեջ: JVM- ն միանում է գոյություն ունեցող քեշին կամ ստեղծում է քեշ, եթե այն գոյություն չունի: Կարող եք ունենալ բազմաթիվ պահոցներ, և դուք կարող եք նշել ճիշտ պահոցը `ավելացնելով ենթաբազմություն -Xshareclasses տարբերակին.

PermGen Չափ

Ավելի վաղ JVM ընտրանքները սահմանում են կույտ հիշողության չափը, բայց -XX. PermSize- ը PermGen տարածքի չափն է, որտեղ պահպանվում է լարային լողավազանն ու դասի մետատվյալները: Այս տարբերակը հատկապես արդյունավետ է Tomcat- ի նման վեբ սերվերի համար, որը տեղակայման ժամանակ հաճախ բեռնում է վեբ հավելվածի դասերը.

Ի դեպ, արժե գիտակցել, որ PermGen տարածքը վերցված է Java 8-ի կողմից Metaspace- ի կողմից, և այս տարբերակը կիրառելի չէ, եթե աշխատում եք JRE 8 JVM- ով:.

Տպել GC

-բայ: gc – տեղեկամատյանները վազում են աղբահանությունը և որքան ժամանակ են տանում.
-XX. + PrintGCDetails – ներառում է -verbose- ից ստացված տվյալները. gc, բայց նաև ավելացնում է տեղեկատվություն նոր սերնդի չափի և ավելի ճշգրիտ ժամկետների վերաբերյալ.
-XX. -PrintGCTimeStamps – Տպել ժապավենները աղբի հավաքման ժամանակ.

JVM- ի այս ընտրանքներն օգտագործվում են աղբի հավաքագրման գործընթացն ապահովելու համար, ինչը խիստ արդյունավետ է լատենտային զգայուն գործողության համար: Մենք նախկինում գտնում էինք համակարգերի վրա, որտեղ մենք փնտրում էինք միկրոկոնյալ պահոցներ, և եթե գիտակցում եք, մեծ աղբի հավաքումը կարող է տևել մի քանի միլիարդ վայրկյան.

Այսպիսով, մենք գնում ենք GC անվճար ճարտարապետության, ինչպիսին է LMAX խանգարողը, բայց իսկապես, եթե դուք չեք պատրաստվում ծայրահեղ լատենտային զգայուն կիրառման դիմել, այս հարմար տարբերակը ձեզ խորհուրդ կտա կարևոր GC վիճակագրություն: Դա ձեզ կբերի, թե դա աղբի մեծ կամ փոքր հավաքածու է, աղբի հավաքողի որ տեսակ է կիրառվում, որքան հաճախ է վերականգնվում հիշողությունը և որքան ժամանակ է այն պահվում և այլն:.

«OutOfMemory» – ի սխալ

Կույտաթափումը հիշողությունից դուրս մղելու համար կարող եք օգտագործել -XX: + HeapDumpOnOutOfMemoryError

JVM- ի այս տարբերակը արտադրում է պարկի աղբանոց, երբ ձեր JVM- ը մահանում է OutOfMemory Error- ով: Ներգրավված ծախս չկա, եթե OOM- ն իրոք տեղի չի ունենում: Այս դրոշը պարտադիր է արտադրական համակարգերի համար, քանի որ սովորաբար խնդիրը խորը որոշելու միակ միջոցն է.

Կույտաթափումը տեղադրվելու է JVM- ի «ընթացիկ գրացուցակում», ըստ լռելյայն: Եթե ​​ցանկանում եք ստեղծել կույտային աղբներ հատուկ գրացուցակում, ապա գործարկեք

-XX. HeapDumpPath = [path-to-heap-dump-Directory]
-XX. + UseGCOverheadLimit
-XX. OnOutOfMemoryError ="< cmd- ը վիճում է >;< cmd- ը վիճում է >"

Կույտաթափման ֆայլը կարող է հսկայական չափսեր ունենալ, մինչև գիգաբայթ, այնպես որ հավաստիացրեք, որ նպատակային ֆայլային համակարգը թույլ է տալիս բավարար հզորություն.

Եթե ​​մենք ուզում ենք վերսկսել սերվերը անմիջապես հիշելուց հետո, ապա մենք կարող ենք սահմանել նույն նպատակի այս պարամետրը.

XX. OnOutOfMemoryError ="անջատում -r"

Հետք դասակարգում և բեռնաթափում

-XX: + TraceClassLoading և -XX: + TraceClassUnloading- ը JVM երկու տարբերակ է, որը մենք օգտագործում ենք մուտքագրելու տեղեկությունները տպելու համար, երբ դասերը բեռնում են JVM կամ բեռնաթափվում JVM- ից: Այս JVM դրոշները օգտակար են, եթե ունեք որևէ տեսակի հիշողության արտահոսք, որը կապված է դասի բեռնիչի հետ և կասկածում եք, որ դասերը չեն բեռնաթափում կամ հավաքվում աղբ:.

Java դասի ուղի

Խոսելով JAVA Classpath- ի այն ժամանակ-Xbootclasspath- ը նշվում է այն դասի ուղիները, որոնք մենք ցանկանում ենք բեռնված լինել առանց ստուգման: JVM- ն հաստատում է իր բեռների բոլոր դասերը `ապահովելու համար, որ այն չի փորձի տարբերակել առարկայից ներսից, փոփից հավելյալ գրառումներ պարունակող օբյեկտով կամ չափազանց շատ մղել և այլն:. 

Դասի տեղադրումը bootclasspath- ով նույնպես բաց է թողնում ծախսը, բայց այն պետք է օգտագործվի միայն այն ժամանակ, երբ գիտեք, որ նախկինում դասերը հաստատվել են: JRuby- ում այս գործարկման ժամանակը կրճատեց կեսը և ավելին ՝ պարզ սցենարի համար.

Պրոֆիլավորում

Java Profiling- ը JVM մակարդակի տարբեր պարամետրերի մոնիտորինգի գործընթացն է, ինչպիսիք են մեթոդների կատարումը, թելերի կատարումը, աղբի հավաքածուները և օբյեկտների ստեղծումը: Java Profiling- ը ձեզ տալիս է ավելի լավ պատկերացում ձեր նպատակային հայտի կատարման և դրա ռեսուրսների օգտագործման վերաբերյալ.

-Xprof
-Xrunhprof- ը

64-բիթանոց միջավայր

OS- ի միջավայրում, որտեղ և 32 և 64-բիթանոց փաթեթները տեղադրված են, JVM- ն ինքնաբերաբար ընտրում է 32-բիթանոց բնապահպանական փաթեթները որպես լռելյայն.

Եթե ​​մենք ուզում ենք շրջապատը ձեռքով կարգավորել 64 բիթ, մենք կարող ենք դա անել ՝ օգտագործելով –d պարամետր: Եվ ակնհայտ է, որ OS բիթը կարող է լինել 32 կամ 64.

Եզրակացություն

Հուսով եմ, որ սա կօգնի ձեզ կարգաբերել JVM պարամետրերը ձեր հայտի համար: Եթե ​​դուք հետաքրքրված եք java հիշողության կառավարման մասին խորությամբ սովորելով, ապա ստուգեք դա Ուդեմի դասընթաց.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map