İstehsal JAVA Tətbiq Sistemi üçün 10 Mühüm JVM Seçimləri

Daha yaxşı işləmə və diskussiya üçün əsas JVM (Java Virtual Machine) seçimləri ilə tanış olun.


Bir Java geliştiricisi və ya orta proqram idarəçisisinizsə, onda JVM seçimlərinin əhəmiyyəti ilə birlikdə nə demək olduğunu və tətbiqlərinizə necə təsir etdiyini bilməlisiniz. Onları tapaq.

JVM Seçimlərə Baxış

JVM variantları haqqında danışarkən, JVM, standart, qeyri-standart və qabaqcıl seçimlərinizə daxil ola biləcəyiniz üç növ seçim var. İnkişaf etmiş bir seçim cəhd etsəniz, həmişə seçiminizi -XX ilə istifadə edirsiniz. Eynilə, qeyri-standart bir seçim tətbiq edirsinizsə, -X istifadə edirsiniz. Standart seçimlər seçimə heç bir şey sərf etmir.

Tətbiqiniz tərəfindən hansı JVM seçimləri istifadə olunur?

Tətbiq Linux-da işləyirsə, ps -ef | istifadə edə bilərsiniz Java prosesini müəyyənləşdirmək və proses arqumentləri olaraq çap edilmiş JVM seçimlərinə baxmaq üçün grep java. Sistemdə birdən çox Java prosesi gedirsə, onda Java tətbiqetməyinizə xas olan bir sözlə getməyinizi tələb edə bilər..

Mübahisəniz çox uzunsa, onda ps -auxww istifadə edin, çünki bu əmr uzun bir mübahisə siyahısını da göstərəcəkdir.

JVM bayraqları siyahısına sahib olduqdan sonra istənilən Java tətbiqetməsinin davranışları, məsələn, Tomcat haqqında bir fikir əldə edə bilərsiniz..

Java yığın ölçüsü

 -Xms – ilkin Java yığın ölçüsünü təyin edin
-Xmx – maksimum Java yığın ölçüsünü təyin edin
-Xss – java ip yığının ölçüsünü təyin edin

-Xms – Bu seçim JVM üçün başlanğıc yığın ölçüsünü müəyyənləşdirməkdir, məsələn, Xms2048m, JVM’nin ilkin yığın ölçüsü təxminən 2 GB ətrafında. Beləliklə, bir JVM işə başlayanda yığın yaddaşı bu qədər böyük olacaqdır. Təəccüblü bəli! Bu başlanğıc zamanı boyutlandırmanın qarşısını almaq və JVM-in başlanğıc vaxtını artırmaq üçün aparılır.

-Xmx – Bu seçim JVM-nin maksimum yığın ölçüsünü, məsələn, Xmx2048m müəyyən etməkdir, yəni JVM-nin maksimal yığın ölçüsü yalnız 2 GB olacaqdır.

Əslində həmişə birlikdə-Xmsand-Xmx olacaq.

Yığın faizini təyin edin

-XX: MaxHeapFreeRatio – kiçilməməsi üçün GC-dən sonra yığınların maksimal faizini təyin edir.

-XX: MinHeapFreeRatio – Genişlənməməsi üçün GC-dən sonra yığınların minimum faizini təyin edir; yığın istifadəsini izləmək üçün JCosole istifadə edə bilərsiniz.

Sinif məlumat mübadiləsini aktivləşdirin

Paylaşılan sinif önbelleğinde sinif məlumat mübadiləsini təmin etmək üçün Xshareclasses seçimini təyin edin. JVM mövcud bir önbelleğe bağlanır və ya yoxdursa, bir önbelleğe yaradır. Birdən çox önbelleğe sahib ola bilərsiniz və -X Şareclasses seçiminə alt alt əlavə etməklə düzgün önbelleği göstərə bilərsiniz..

PermGen Ölçüsü

Əvvəllər JVM seçimləri yığın yaddaşının ölçüsünü təyin edir, lakin -XX: PermSize, simli hovuzun və sinif metadatasının saxlanıldığı PermGen sahəsinin ölçüsünü təyin etməkdir. Bu seçim Tomcat kimi bir veb server üçün xüsusilə təsirlidir, tez-tez yerləşdirmə zamanı veb tətbiqetmələrini yükləyir.

Yeri gəlmişkən, PermGen məkanının Java 8-də Metaspace tərəfindən qəbul edildiyini və JRE 8 JVM ilə işlədiyiniz halda bu seçim tətbiq olunmayacağını başa düşməyə dəyər..

GC yazın

-verbose: gc – loglarda zibil toplayıcı çalışır və nə qədər çəkirsiniz.
-XX: + PrintGCDetaillər – -verbose məlumatlarını ehtiva edir: gc, eyni zamanda yeni nəslin ölçüsü və daha dəqiq vaxtları haqqında məlumat əlavə edir.
-XX: -Çap etmə markaları – Zibil toplama vaxt işarələrini çap edin.

Bu JVM variantları, gecikməyə həssas bir əməliyyat üçün olduqca təsirli olan zibil toplama girişini təmin etmək üçün istifadə olunur. Əvvəllər mikrosaniyəlik gecikmələri axtardığımız sistemlərdə olduq və tanısanız, böyük bir zibil toplama bir neçə millisekundda davam edə bilər.

Beləliklə, biz LMAX pozan kimi GC pulsuz memarlıq üçün gedirik, amma həqiqətən də ultra gecikməyə həssas bir tətbiq üçün getməsəniz, bu lazımlı seçim sizə vacib GC statistikalarını tövsiyə edəcəkdir. Böyük və ya kiçik zibil toplusunun, hansı zibil toplayıcısının tətbiq olunduğunu, yaddaşın nə qədər bərpa olunduğunu və nə qədər vaxt keçirildiyini və s..

‘OutOfMemory’ xətası ilə işləmə

Yığım tökülməsini yaddaşdan çıxartmaq üçün istifadə edə bilərsiniz -XX: + HeapDumpOnOutOfMemoryError

Bu JVM seçimi, JVM OutOfMemory Error ilə öldükdə bir yığın zibilini çıxarır. Bir OOM həqiqətən baş verməyincə heç bir xərc yoxdur. Bu bayraq istehsal sistemləri üçün zəruri şərtdir, çünki ümumiyyətlə problemi dərindən müəyyənləşdirmək üçün yeganə yoldur.

Yığınacaq axını JVM’nin “cari qovluq” da qurulacaq. Xüsusi qovluqda yığın zibilləri yaratmaq istəyirsinizsə, işə salın

-XX: HeapDumpPath = [yol-to-yığın-dump-qovluq]
-XX: + UseGCOverheadLimit
-XX: OnOutOfMemoryError ="< cmd args >;< cmd args >"

Yığıncaq boşaltma faylı böyük ölçüdə, gigabayt qədər ola bilər, buna görə hədəf fayl sisteminin kifayət qədər tutum qazandıracağına əmin olun.

Yaddaşdan çıxdıqdan dərhal sonra serveri yenidən başlatmaq istəyiriksə, eyni məqsədi bu parametr təyin edə bilərik –

XX: OnOutOfMemoryError ="bağlamaq -r"

İzləmə sinif yükləmə və boşaltma

-XX. Sinif yükləyicisi ilə əlaqəli və dərslərin boşaldılmadığından və zibil yığılmadığından şübhələndiyiniz hər hansı bir yaddaş sızması varsa, bu JVM bayraqları faydalıdır..

Java sinif yolu

JAVA Classpath haqqında danışmaq sonra-Xbootclasspath, doğrulamadan yükləndiyimiz sinif yollarını göstərir. JVM bir int ilə bir obyekti imtina etməyə çalışmadığından, yığılmış yerdən əlavə girişlər çıxmasından və ya çox itələməməsindən və s. Yüklədiyi bütün sinifləri yoxlayır.. 

Sinifin bootclasspath-a qoyulması da xərcləri itirir, ancaq əvvəllər dərslərin dəfələrlə yoxlanıldığını bildiyiniz zaman istifadə olunmalıdır. JRuby-də bu sadə bir skript üçün başlanğıc vaxtını yarıya və daha çox azaldıb.

Profil

Java Profilləşdirmə, Metod İcra, Mövzuların icrası, Zibil toplama və Obyekt Yaradılması kimi müxtəlif JVM səviyyələri parametrlərinin izlənməsi prosesidir. Java Profiling, hədəf tətbiqinizin icrası və onun istifadəsi baxımından daha incə bir görünüş təmin edir.

-Xprof
-Xrunhprof

64 bitlik mühit

Həm 32, həm də 64 bitlik paketin quraşdırıldığı OS mühitində JVM avtomatik olaraq 32 bitlik ekoloji paketləri seçir.

Ətraf mühiti əl ilə 64 bit səviyyəsinə təyin etmək istəyiriksə, -d parametrini istifadə edərək bunu edə bilərik. Aydındır ki, OS bit ya 32, ya da 64 ola bilər.

Nəticə

Ümid edirəm ki, bu, tətbiqiniz üçün JVM parametrlərini konfiqurasiya etməyə kömək edəcəkdir. Java yaddaşının idarə olunması ilə bağlı ətraflı məlumat almaq istəyirsinizsə, buna baxın Udemy kursu.

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