国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
CustomObjTest contoh objek dan mengambil terlalu banyak memoriMalangnya, penyelesaiannya mempunyai batasan kerana ia hanya boleh Menyelesaikan masalah yang objek menduduki terlalu banyak memoridi mana "[" mewakili tatasusunan, contohnya, "[C" mewakili tatasusunan Char dan "[B" mewakili tatasusunan Byte. Jika memori tatasusunan mengambil terlalu banyak, kami tidak tahu objek mana yang memegangnya, jadi kami perlu membuang memori untuk analisis luar talian" >Jelas lihatCustomObjTest contoh objek dan mengambil terlalu banyak memoriMalangnya, penyelesaiannya mempunyai batasan kerana ia hanya boleh Menyelesaikan masalah yang objek menduduki terlalu banyak memoridi mana "[" mewakili tatasusunan, contohnya, "[C" mewakili tatasusunan Char dan "[B" mewakili tatasusunan Byte. Jika memori tatasusunan mengambil terlalu banyak, kami tidak tahu objek mana yang memegangnya, jadi kami perlu membuang memori untuk analisis luar talian
Rumah Java JavaSoalan temu bual Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

Aug 23, 2023 pm 02:34 PM
soalan temuduga java oom

OOM bermakna terdapat kelemahan dalam program, yang mungkin disebabkan oleh kod atau konfigurasi parameter JVM. Artikel ini bercakap dengan pembaca tentang cara menyelesaikan masalah apabila proses Java mencetuskan OOM.

Ia sering dikatakan kagum dengan persekitaran pengeluaran, dan menyelesaikan masalah dengan cepat juga merupakan tanda kagum

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

Kenapa OOM

OOM bermaksud "Out Of Memory" ingatan sudah habis. Apabila JVM tidak mempunyai memori yang mencukupi untuk memperuntukkan ruang untuk objek, dan pengumpul sampah tidak mempunyai ruang untuk mengitar semula, ia akan membuang ralat ini

Mengapa OOM berlaku secara amnya disebabkan oleh masalah ini

  1. Terlalu sedikit peruntukan : Memori permulaan JVM adalah kecil, dan perniagaan menggunakan banyak memori; atau peruntukan memori dalam kawasan JVM yang berbeza adalah tidak munasabah
  2. Kerentanan kod: objek tertentu sering digunakan, tetapi tidak dikeluarkan selepasnya tidak digunakan lagi, mengakibatkan kehabisan daya ingatan

Memori bocor: Memori yang telah dipohon tidak dilepaskan menyebabkan mesin maya tidak dapat menggunakan memori itu semula . Kerana pemohon tidak lagi digunakan, tetapi mesin maya tidak boleh diperuntukkan kepada orang lain

Memori limpahan: Memori yang digunakan melebihi saiz memori yang boleh diberikan oleh JVM pada masa ini, ia dipanggil limpahan

Kebocoran ingatan berterusan, dan akhirnya ia mesti Akan melimpah, kedua-duanya berkaitan sebab musabab

OOM Biasa

Jenis OOM yang lebih biasa adalah seperti berikut

java.lang.OutOfMemoryErspace Limpahan penjanaan kekal Java7 (kawasan kaedah), yang digunakan untuk menyimpan data seperti maklumat kelas, pemalar, pembolehubah statik dan kod yang disusun oleh pengkompil tepat dalam masa yang telah dimuatkan oleh mesin maya. Setiap kali kelas dimuatkan buat kali pertama, metadata akan disimpan dalam generasi kekal Biasanya ia berlaku dalam sejumlah besar objek Kelas atau halaman JSP, atau ia disebabkan oleh menggunakan teknologi proksi dinamik CgLib.

我們可以通過 - XX:PermSize-XX:MaxPermSize 修改方法區(qū)大小-XX:PermSize-XX:MaxPermSize 修改方法區(qū)大小

Java8 將永久代變更為元空間,報(bào)錯(cuò):java.lang.OutOfMemoryError: Metadata space,元空間內(nèi)存不足默認(rèn)進(jìn)行動(dòng)態(tài)擴(kuò)展

java.lang.StackOverflowError

虛擬機(jī)棧溢出,一般是由于程序中存在 死循環(huán)或者深度遞歸調(diào)用 造成的。如果棧大小設(shè)置過小也會出現(xiàn)溢出,可以通過 -Xss 設(shè)置棧的大小

虛擬機(jī)拋出棧溢出錯(cuò)誤,可以在日志中定位到錯(cuò)誤的類、方法

java.lang.OutOfMemoryError: Java heap space

Java 堆內(nèi)存溢出,溢出的原因一般由于 JVM 堆內(nèi)存設(shè)置不合理或者內(nèi)存泄漏導(dǎo)致

如果是內(nèi)存泄漏,可以通過工具查看泄漏對象到 GC Roots 的引用鏈。掌握了泄漏對象的類型信息以及 GC Roots 引用鏈信息,就可以精準(zhǔn)地定位出泄漏代碼的位置

如果不存在內(nèi)存泄漏,就是內(nèi)存中的對象確實(shí)都還必須存活著,那就應(yīng)該檢查虛擬機(jī)的堆參數(shù)(-Xmx 與 -Xms),查看是否可以將虛擬機(jī)的內(nèi)存調(diào)大些

小結(jié):方法區(qū)和虛擬機(jī)棧的溢出場景不在本篇過多討論,下面主要講解常見的 Java 堆空間的 OOM 排查思路

查看 JVM 內(nèi)存分布

假設(shè)我們 Java 應(yīng)用 PID 為 15162,輸入命令查看 JVM 內(nèi)存分布 jmap -heap 15162

Java8 將永久代變更為元空間,報(bào)錯(cuò):java.lang.OutOfMemoryError: Ruang metadata,元空間內(nèi)存不足默認(rèn)進(jìn)有莌前java.lang.StackOverflowError

虛擬機(jī)棧溢出,一般是由于程序中存在 死循環(huán)或者深度遞歸調(diào)用度遞歸調(diào)用度遞歸調(diào)用 我家家家置過小也會出現(xiàn)溢出,可以通過 -Xss 設(shè)置棧的大小

??虛擬機(jī)拋出棧溢出錯(cuò)誤,可以在日志中定位到錯(cuò)誤的類、方法出錯(cuò)誤,可以在日志中定位到錯(cuò)誤的類、方法space ????Jawa 堆內(nèi)存溢出.工具查看泄漏對象到 GC Roots 的引用鏈。掌握了泄漏對象的類型信息以及 GC Roots引用鏈信息,就可以精準(zhǔn)地定位出泄漏代碼的位置????如果不存在內(nèi)存不存在內(nèi)存,小歏家確實(shí)都還必須存活著,那就應(yīng)該檢查虛擬機(jī)的堆參數(shù)(-Xmx 與 -Xms) ,查看是否可以將虛擬機(jī)的內(nèi)存調(diào)大些????小結(jié):方法區(qū)和虛擬機(jī)棧的溢出從管,下面主要講解常見的 Java 堆空間的 OOM 排查思路??

查看 JVM 內(nèi)存分布

??假設(shè)我們 Java 應(yīng)用 PID 為 15162,輸入命令查看 JVM 內(nèi)存分布1px-style ;wrap-style break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono" , Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);">jmap -timbunan 15162??
[xxx@xxx ~]# jmap -heap 15162
Attaching to process ID 15162, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.161-b12

using thread-local object allocation.
Mark Sweep Compact GC

Heap Configuration:
   MinHeapFreeRatio         = 40 # 最小堆使用比例
   MaxHeapFreeRatio         = 70 # 最大堆可用比例
   MaxHeapSize              = 482344960 (460.0MB) # 最大堆空間大小
   NewSize                  = 10485760 (10.0MB) # 新生代分配大小
   MaxNewSize               = 160759808 (153.3125MB) # 最大新生代可分配大小
   OldSize                  = 20971520 (20.0MB) # 老年代大小
   NewRatio                 = 2 # 新生代比例
   SurvivorRatio            = 8 # 新生代與 Survivor 比例
   MetaspaceSize            = 21807104 (20.796875MB) # 元空間大小
   CompressedClassSpaceSize = 1073741824 (1024.0MB) # Compressed Class Space 空間大小限制
   MaxMetaspaceSize         = 17592186044415 MB # 最大元空間大小
   G1HeapRegionSize         = 0 (0.0MB) # G1 單個(gè) Region 大小

Heap Usage:  # 堆使用情況
New Generation (Eden + 1 Survivor Space): # 新生代
   capacity = 9502720 (9.0625MB) # 新生代總?cè)萘?   used     = 4995320 (4.763908386230469MB) # 新生代已使用
   free     = 4507400 (4.298591613769531MB) # 新生代剩余容量
   52.56726495150862% used # 新生代使用占比
Eden Space:  
   capacity = 8454144 (8.0625MB) # Eden 區(qū)總?cè)萘?   used     = 4029752 (3.8430709838867188MB) # Eden 區(qū)已使用
   free     = 4424392 (4.219429016113281MB) # Eden 區(qū)剩余容量
   47.665996699370154% used  # Eden 區(qū)使用占比
From Space: # 其中一個(gè) Survivor 區(qū)的內(nèi)存分布
   capacity = 1048576 (1.0MB)
   used     = 965568 (0.92083740234375MB)
   free     = 83008 (0.07916259765625MB)
   92.083740234375% used
To Space: # 另一個(gè) Survivor 區(qū)的內(nèi)存分布
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
tenured generation: # 老年代
   capacity = 20971520 (20.0MB)
   used     = 10611384 (10.119804382324219MB)
   free     = 10360136 (9.880195617675781MB)
   50.599021911621094% used

10730 interned Strings occupying 906232 bytes.
??通過查看 JVM 內(nèi)存刨制菊行情況,可以判斷內(nèi)存分配是否合理??

Selain itu, anda boleh melihat objek yang paling banyak menggunakan sumber semasa JVM sedang berjalan, jmap -histo:live 15162 | morejmap -histo:live 15162 | more

JVM 內(nèi)存對象列表按照對象所占內(nèi)存大小排序

  • instances:實(shí)例數(shù)
  • bytes:單位 byte
  • class name:類名
Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

明顯看到 CustomObjTest 對象實(shí)例以及占用內(nèi)存過多

可惜的是,方案存在局限性,因?yàn)樗荒芘挪閷ο笳加脙?nèi)存過高問題

其中 "[" 代表數(shù)組,例如 "[C" 代表 Char 數(shù)組,"[B" 代表 Byte 數(shù)組。如果數(shù)組內(nèi)存占用過多,我們不知道哪些對象持有它,所以就需要 Dump 內(nèi)存進(jìn)行離線分析

jmap -histo:live

Senarai objek memori JVM diisih mengikut saiz memori yang diduduki oleh objek
  • instance: bilangan instance
  • bait: unit byte
  • nama kelas: nama kelas
Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

Jelas lihatCustomObjTest contoh objek dan mengambil terlalu banyak memoriMalangnya, penyelesaiannya mempunyai batasan kerana ia hanya boleh Menyelesaikan masalah yang objek menduduki terlalu banyak memoridi mana "[" mewakili tatasusunan, contohnya, "[C" mewakili tatasusunan Char dan "[B" mewakili tatasusunan Byte. Jika memori tatasusunan mengambil terlalu banyak, kami tidak tahu objek mana yang memegangnya, jadi kami perlu membuang memori untuk analisis luar talian

jmap -histo:live Laksanakan arahan ini, JVM akan mencetuskan GC dahulu, dan kemudian kumpulkan statistik

Analisis fail buang Fail Dump ialah imej memori proses Java, di mana Ia terutamanya termasuk

maklumat sistem

, sifat mesin maya,

buang benang lengkap

,

status semua kelas dan objek?? dan maklumat lain????Apabila program mempunyai limpahan memori atau GC pengecualian, disyaki JVM telah berlaku??kebocoran memori ??, maka kita boleh mengeksport fail Dump untuk analisis????Tambah parameter berikut pada konfigurasi parameter permulaan JVM??
  • -XX:+HeapDumpOnOutOfMemoryError
  • -XX:HeapDumpPath=./(參數(shù)為 Dump 文件生成路徑)

當(dāng) JVM 發(fā)生 OOM 異常自動(dòng)導(dǎo)出 Dump 文件,文件名稱默認(rèn)格式:java_pid{pid}.hprof

上面配置是在應(yīng)用拋出 OOM 后自動(dòng)導(dǎo)出 Dump,或者可以在 JVM 運(yùn)行時(shí)導(dǎo)出 Dump 文件

jmap -dump:file=[文件路徑] [pid]

# 示例
jmap -dump:file=./jvmdump.hprof 15162

在本地寫一個(gè)測試代碼,驗(yàn)證下 OOM 以及分析 Dump 文件

設(shè)置 VM 參數(shù):-Xms3m -Xmx3m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./

public static void main(String[] args) {
    List<Object> oomList = Lists.newArrayList();
   // 無限循環(huán)創(chuàng)建對象
    while (true) {
        oomList.add(new Object());
    }
}

通過報(bào)錯(cuò)信息得知,java heap space 表示 OOM 發(fā)生在堆區(qū),并生成了 hprof 二進(jìn)制文件在當(dāng)前文件夾下

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

JvisualVM 分析

Dump 分析工具有很多,相對而言 JvisualVMJProfiler、Eclipse Mat,使用人群更多一些。下面以 JvisualVM 舉例分析 Dump 文件

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

列舉兩個(gè)常用的功能,第一個(gè)是能看到觸發(fā) OOM 的線程堆棧,清晰得知程序溢出的原因

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

第二個(gè)就是可以查看 JVM 內(nèi)存里保留大小最大的對象,可以自由選擇排查個(gè)數(shù)

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

點(diǎn)擊對象還可以跳轉(zhuǎn)具體的對象引用詳情頁面

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?

文中 Dump 文件較為簡單,而正式環(huán)境出錯(cuò)的原因五花八門,所以不對該 Dump 文件做深度解析

注意:JvisualVM 如果分析大 Dump 文件,可能會因?yàn)閮?nèi)存不足打不開,需要調(diào)整默認(rèn)的內(nèi)存

Semakan ringkasan

Jika anda menghadapi limpahan memori JVM dalam talian, anda boleh menyelesaikan masalah dalam langkah berikut

  1. jmap -heap Semak sama ada peruntukan memori terlalu keciljmap -heap 查看是否內(nèi)存分配過小
  2. jmap -histo 查看是否有明顯的對象分配過多且沒有釋放情況
  3. jmap -dump
jmap -histo Semak sama ada terdapat apa-apa yang jelas peruntukan objek Terlalu banyak dan tiada pelepasan

jmap -dump Eksport gambar memori semasa JVM dan gunakan alat seperti JDK atau MAT untuk menganalisis syot kilat ????????Jika masalah tidak dapat ditemui di atas, anda perlu menyemak sama ada aplikasi sentiasa mencipta sumber, seperti rangkaian Sambungan atau benang boleh menyebabkan sumber sistem kehabisan. ??????

Atas ialah kandungan terperinci Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Penemubual: Anotasi biasa Spring Aop dan urutan pelaksanaan Penemubual: Anotasi biasa Spring Aop dan urutan pelaksanaan Aug 15, 2023 pm 04:32 PM

Anda mesti tahu Spring, jadi mari kita bincangkan tentang susunan semua pemberitahuan Aop Bagaimana Spring Boot atau Spring Boot 2 mempengaruhi susunan pelaksanaan aop? Beritahu kami tentang perangkap yang anda hadapi dalam AOP?

Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan? Temu bual dengan kumpulan tertentu: Jika anda menemui OOM dalam talian, bagaimanakah anda harus menyelesaikan masalah itu? Bagaimana untuk menyelesaikannya? Apakah pilihan? Aug 23, 2023 pm 02:34 PM

OOM bermakna terdapat kelemahan dalam program, yang mungkin disebabkan oleh kod atau konfigurasi parameter JVM. Artikel ini bercakap dengan pembaca tentang cara menyelesaikan masalah selepas proses Java mencetuskan OOM.

Penemuduga: Jika anda menemui OOM dalam talian, bagaimana untuk menyelesaikannya? Penemuduga: Jika anda menemui OOM dalam talian, bagaimana untuk menyelesaikannya? Aug 17, 2023 pm 04:38 PM

OOM boleh dikatakan sebagai salah satu masalah yang paling kami takuti oleh pembangun, dan puncanya pada dasarnya disebabkan oleh konfigurasi parameter kod atau JVM. Artikel ini bercakap dengan pembaca tentang cara menyelesaikan masalah apabila proses Java mencetuskan OOM.

Soalan ujian bertulis Ele.me kelihatan mudah, tetapi ia membingungkan ramai orang Soalan ujian bertulis Ele.me kelihatan mudah, tetapi ia membingungkan ramai orang Aug 24, 2023 pm 03:29 PM

Jangan memandang rendah soalan peperiksaan bertulis banyak syarikat Terdapat perangkap dan anda boleh jatuh ke dalamnya secara tidak sengaja. Apabila anda menghadapi soalan ujian bertulis seperti ini tentang kitaran, saya cadangkan anda berfikir dengan tenang dan ambil langkah demi langkah.

Minggu lepas, saya ada temu bual dengan XX Insurance dan memang bagus! ! ! Minggu lepas, saya ada temu bual dengan XX Insurance dan memang bagus! ! ! Aug 25, 2023 pm 03:44 PM

Minggu lepas, seorang rakan dalam kumpulan pergi untuk temu bual dengan Ping An Insurance Hasilnya agak kesal, tetapi saya harap anda tidak akan berkecil hati, pada dasarnya semua soalan yang dihadapi temu duga boleh diselesaikan dengan menghafal soalan temuduga Ia telah diselesaikan, jadi sila bekerja keras!

5 Rentetan soalan temuduga, kurang daripada 10% orang boleh menjawab semuanya dengan betul! (dengan jawapan) 5 Rentetan soalan temuduga, kurang daripada 10% orang boleh menjawab semuanya dengan betul! (dengan jawapan) Aug 23, 2023 pm 02:49 PM

Artikel ini akan melihat 5 soalan temu bual tentang kelas Java String Saya sendiri telah mengalami beberapa daripada lima soalan ini semasa proses temu duga.

Novis juga boleh bersaing dengan penemuduga BAT: CAS Novis juga boleh bersaing dengan penemuduga BAT: CAS Aug 24, 2023 pm 03:09 PM

Bab tambahan bagi siri pengaturcaraan serentak Java, C A S (Banding dan tukar), masih dalam gaya yang mudah difahami dengan gambar dan teks, membolehkan pembaca berbual gila dengan penemuduga.

Soalan yang ditanya dalam hampir semua wawancara Java: bercakap tentang perbezaan antara ArrayList dan LinkedList Soalan yang ditanya dalam hampir semua wawancara Java: bercakap tentang perbezaan antara ArrayList dan LinkedList Jul 26, 2023 pm 03:11 PM

Struktur data Java adalah tumpuan temu bual Sesiapa yang telah mengambil bahagian dalam temu bual Java mesti mempunyai pengalaman. Apabila penemuduga bertanya soalan sedemikian, mereka sering ingin menyemak sama ada anda telah mengkaji struktur asas jenis data yang biasa digunakan di Jawa, dan bukannya hanya kekal pada tahap "tahu cara menggunakan".

See all articles