JavaRush /Blog Jawa /Random-JV /Kepiye hubungane wadhah lan Jawa?
Павел
tingkat

Kepiye hubungane wadhah lan Jawa?

Diterbitake ing grup
Kanggo sing wis maca babagan kontaner lan Docker , nanging ora ngerti carane Jawa wis latched menyang kontaner. Kaping pisanan, ayo refresh memori babagan memori Jawa . Ayo kula ngelingake yen memori kalebu Stack lan Heap, sing nggunakake RAM (memori akses acak) saka server; nalika ngomong babagan memori, tegese RAM. Saiki ayo ndeleng wadhah ing bagean silang. Kepiye hubungane wadhah lan Jawa?  - 1 Ora, mesthi ora, kita ora kasengsem ing bokong lan pupu, kita bakal katon ing struktur memori ing wadhah. Bisa dipérang dadi telung bagéan: • Heap Memory - tumpukan dhewe; • Off Heap iku kabeh sing ora ana ing tumpukan; • OS Overhead punika nduwur sirah memori kanggo ngleksanakake pangolahan nang wadhah. Kepiye hubungane wadhah lan Jawa?  - 2 Ayo ngomong: Kita wis nyedhiyakake 1 Gb menyang wadhah, ing gambar kasebut bakal dadi Watesan Wadah - watese dituduhake kanthi persegi panjang biru. Kita nyedhiyakake 80%, yaiku 0,8 Gb, kanggo memori Java ing wadhah, lan Heap njupuk udakara 80% wadhah, yaiku, ora kurang saka 0,8 Gb, amarga OS Overhead njupuk bagean saka sumber daya (overhead). kanggo njaga proses. Kira-kira 20% saka wadhah ditinggalake kanggo kabeh sing ora disambungake menyang tumpukan ( Off Heap ). Area Used ing tokoh nuduhake area memori digunakake kanggo mbukak aplikasi. Saiki kita kudu ngomong babagan kahanan nalika memori ing wadhah bisa entek. OutOfMemoryError Yen konsumsi memori aplikasi ( Wilayah digunakake ) tekan watesan numpuk ( Heap ), kita bakal nyekel OutOfMemoryError (OOM Error) . Sing ujar manawa ora ana papan sing cukup ing tumpukan, yaiku, ing area memori ing ngendi obyek sing digawe kanthi program ing aplikasi kasebut diselehake. Kepiye hubungane wadhah lan Jawa?  - 3 Yen durung jelas, aku bakal nerangake ing kucing. Kesalahan OOM yaiku nalika kucing njerit suwe-suwe ing ngarep lawang menyang loteng, lan nalika lawang iki dibukak, dheweke ngadeg ing lawang lan ora lunga, dheweke kerep ngomong yen kucing beku. Yen sampeyan nyurung dheweke ing wektu, dheweke bakal nyelehake rahang lan menyang balkon kanggo nindakake bisnis kucing. Kepiye hubungane wadhah lan Jawa?  - 4 OOM Killer Iki kahanan liyane sing bisa kelakon ing wadhah nalika memori entek. Kepiye hubungane wadhah lan Jawa?  - 5 Yen program metu saka wadhah, kita njaluk OutOfMemory Killer (OOM Killer) - iki proses sing terminates aplikasi kanggo nyimpen kernel saka nabrak. Iku kurban aplikasi supaya wadhah mlaku. Iku ora kasunyatan sing wadhah bakal tiba, nanging aplikasi sing mlaku ing mesthi bakal tiba. Iki kedadeyan yen konsumsi memori aplikasi Java ora bisa dikendhaleni. Maneh ing kucing. Yen sampeyan mutusake turu maneh ing dina Sabtu lan kelalen menehi panganan kucing, banjur OOM Killerkembang wis dijamin, pot bisa uga ora rusak, nanging kembang kudu ditandur maneh. Kepiye hubungane wadhah lan Jawa?  - 6 Apa bedane OOM Error lan OOM Killer? Sampeyan bisa ngolah OOM Error lan nindakake sawetara tumindak (contone: skala aplikasi), lan OOM Killer mung bakal mateni kabeh proses. OOM Killer mirip karo kill-9 (kill minus nine) - perintah sing mateni proses ing Linux . Kepiye hubungane wadhah lan Jawa?  - 7 Bab iku implementasine wadhah sing paling populer yaiku wadhah Docker , sing adhedhasar Linux , sanajan sampeyan mbukak ing Windows , kernel bakal tetep saka Linux . Ing Linux, kita kasengsem ing siji konsep: CGroups (grup kontrol Inggris) - mekanisme kernel Linux sing mbatesi lan ngisolasi sumber daya komputasi (prosesor, jaringan, sumber memori, sumber daya I / O) kanggo kelompok pangolahan. Cukup, mekanisme iki ngidini sampeyan ngatur sumber daya ing wadhah, ing memori kasus kita. Kepiye hubungane Jawa karo iki? Iku liwat mekanisme CGroups sing Jawa bisa latch ing memori wadhah. Nanging iki kabeh gumantung ing versi Jawa. Contone, Java 7 ora ngerti carane nggunakake CGroups , lan watesan wadhah ora dingerteni. Kanthi gawan, ukuran tumpukan maksimal = ¼ memori fisik. Yen aplikasi ngluwihi watesan wadhah, banjur bakal ana OOM Killer , lan yen watesan wadhah ora disetel, aplikasi bakal njupuk memori saka aplikasi liyane ing server (luwih becik nyetel watesan, yen kabeh wong bakal kelangan) . Sampeyan bisa, mesthi, nggunakake setelan tumpukan utawa nggunakake khusus "gambar" sing ngatasi masalah iki, nanging cara paling gampang kanggo nggunakake versi bener saka Jawa. Versi sing bener diwiwiti karo Java 8 x131 (porting saka Java 9), mula ngerti CGroups . Lan ing Jawa 10, dhukungan kanggo kontaner katon: UseContainerSupport , mengko fungsi iki ditransfer menyang Java 8 x 191 . Utawa sampeyan mung bisa nggunakake Jawa: 11+ . Apa sing bisa disimpulake: Nalika nggunakake memori wadhah, sampeyan bisa nampa OutOfMemoryError (OOM Error) utawa OutOfMemoryKiller (OOM Killer). Ing kasus sing sepisanan, aplikasi ora bakal nabrak langsung, Kesalahan OOM bisa kejiret, tumindak sing diproses lan dikontrol bisa ditindakake. Contone, ukuran aplikasi. Yen Pembunuh OOM kedadeyan, aplikasi kasebut bakal langsung nabrak, lan ora ana pilihan kanggo nyimpen. Lan sing paling awon yaiku yen ing njaba wadhah kasebut bakal apik, yaiku, sampeyan bisa uga ora nyangka manawa ana barang sing tiba. Mekanisme Linux digunakake kanggo sesambungan karo wadhah lan memori Jawa. Nanging ora saben wong Jawa ngleksanakake. Kanggo ngindhari masalah kanggo Java 8, sampeyan kudu nggunakake versi sing diwiwiti saka 131, utawa luwih apik, saka 191. Utawa nggunakake Java: 11+. Kanggo laku: OutOfMemoryError: nyekel yen sampeyan bisa
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION