日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java虛擬機常見內存溢出錯誤匯總

瀏覽:37日期:2022-08-24 18:53:16

一、引言

從事java開發的小伙伴在平時的開發工作中,應該會遇見各式各樣的異常和錯誤,在實際工作中積累的異?;蛘咤e誤越多,趟過的坑越多,就會使我們編碼更加的健壯,就會本能地避開很多嚴重的坑。以下介紹幾個Java虛擬機常見內存溢出錯誤。以此警示,避免生產血案。

二、模擬Java虛擬機常見內存溢出錯誤

1、內存溢出之棧溢出錯誤

package com.jayway.oom; /** * 棧溢出錯誤 * 虛擬機參數:-Xms10m -Xmx10m * 拋出異常:Exception in thread 'main' java.lang.StackOverflowError */ public class StackOverflowErrorDemo { public static void main(String[] args) { stackOverflowError(); } private static void stackOverflowError() { stackOverflowError(); } }

2、內存溢出之堆溢出錯誤

package com.jayway.oom; import java.util.Random; /** * 堆溢出錯誤 * 虛擬機參數:-Xmx10m -Xms10m * 拋出異常:Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space */ public class JavaHeapSpaceErrorDemo { public static void main(String[] args) { String temp = 'java'; //不斷地在堆中開辟空間,創建對象,撐爆堆內存 while (true) { temp += temp + new Random().nextInt(111111111) + new Random().nextInt(222222222); temp.intern(); } } }

3、內存溢出之GC超過執行限制錯誤

package com.jayway.oom; import java.util.ArrayList; import java.util.List; /** * GC超過執行限制錯誤 * 虛擬機參數:-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:MaxDirectMemorySize=5m * * 拋出異常:Exception in thread 'main' java.lang.OutOfMemoryError: GC overhead limit exceeded * * 導致原因:GC回收時間過長會拋出OutOfMemoryError,何為過長,即超過98%的cpu時間用來做GC垃圾回收 * 但是回收效果甚微,僅僅只有2%的CPU時間用來用戶程序的工作,這種狀態是很糟糕的,程序在不斷地GC * 形成惡性循環,CPU的使用率一直是滿負荷的,正經活卻沒有干,這種情況虛擬機只好拋出錯誤來終止程序的執行 * * 不斷地Full GC,事倍功微 * [Full GC (Ergonomics) [PSYoungGen: 2047K->2047K(2560K)] [ParOldGen: 7167K->7161K(7168K)] 9215K->9209K(9728K), [Metaspace: 3529K->3529K(1056768K)], 0.0291829 secs] [Times: user=0.08 sys=0.02, real=0.03 secs] */ public class GCOverheadErrorDemo { public static void main(String[] args) { int i = 0; List<String> list = new ArrayList<>(); try { while (true) { list.add(String.valueOf(++i).intern()); } } catch (Throwable e) { System.out.println('*****************i:' + i); e.printStackTrace(); throw e; } } }

4、內存溢出之直接內存溢出錯誤

package com.jayway.oom; import java.nio.ByteBuffer; /** * 直接內存溢出錯誤 * 拋出異常:Exception in thread 'main' java.lang.OutOfMemoryError: Direct buffer memory * * 配置虛擬機參數:-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:MaxDirectMemorySize=5m * * 導致原因:通常NIO程序經常使用ByteBuffer來讀取或者寫入數據,這是一種基于通道(Channel)與緩沖區(Buffer)的IO方式, * 它可以使用Native函數庫直接分配堆外內存,然后通過一個存儲在java堆里面的DirectByteBuffer對象作為這塊內存的引用, * 這樣能子一些場景中顯著提高性能,因為避免了在Java堆和Native內存中來回復制數據。 * * ByteBuffer.allocate(capability):分配JVM堆內存,數據GC的管轄范圍,由于需要拷貝所以速度相對較慢 * * ByteBuffer.allocate(capability):分配OS本地內存,不屬于GC管轄范圍,由于不需要內存拷貝,所以速度相對較快。 * * 但是如果不斷分配本地內存,堆內存很少使用,那么JVM就不需要執行GC,DirectByteBuffer對象就不會被回收,此時如果繼續分配堆外內存, * 可能堆外內存已經被耗光了無法繼續分配,此時程序就會拋出OutOfMemoryError,直接崩潰。 * */ public class DirectBufferMemoryErrorDemo { public static void main(String[] args) { //默認JVM配置的最大直接內存是總物理內存的四分之一 long maxDirectMemory = sun.misc.VM.maxDirectMemory() / 1024 / 1024; System.out.println('配置的maxDirectMemory:' + maxDirectMemory + 'MB'); ByteBuffer byteBuffer = ByteBuffer.allocateDirect(6 * 1024 * 1024); } }

5、內存溢出之無法創建新的本地線程

package com.jayway.oom; /** * 內存溢出之無法創建新的本地線程 * 拋出異常:java.lang.OutOfMemoryError: unable to create new native thread * * 描述: * 高并發請求服務器時,經常出現java.lang.OutOfMemoryError: unable to create new native thread * native thread異常與對應的平臺有關 * * 導致原因: * 1、應用程序創建了太多線程了,一個應用進程創建的線程數超過系統承載極限。 * 2、操作系統并不允許你的應用進程創建這么多的線程,linux系統默認允許單個進程可以創建的線程數是1024個 * * 解決方法: * 1、想辦法降低應用進程創建的線程數量, * 2、如果應用程序確實需要這么多線程,超過了linux系統的默認1024個限制,可以通過修改linux服務器配置,提高這個閾值。 * */ public class UnableCreateNativeThreadErrorDemo { public static void main(String[] args) { for (int i = 0; true; i++) { System.out.println('***************i:' + i);//不斷得創建新線程,直到超過操作系統允許應用進程創建線程的極限 new Thread(() -> { try { Thread.sleep(Integer.MAX_VALUE); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); } } }

6、內存溢出之元空間溢出錯誤

package com.jayway.oom; import org.springframework.cglib.proxy.Enhancer; import org.springframework.cglib.proxy.MethodInterceptor; import org.springframework.cglib.proxy.MethodProxy; import java.lang.reflect.Method; /** * 元空間溢出錯誤 * 拋出異常:java.lang.OutOfMemoryError: Metaspace * * 設置虛擬機參數:-XX:MetaspaceSize=8m -XX:MaxMetaspaceSize=8m * * 描述:Java8及以后的版本使用Metaspace來替代了永久代。metaspace是方法區在HotSpot中的實現,它與持久代最大的區別在于 * Metaspace并不在虛擬機內存中而是在本地內存中。 * * 元空間存儲了以下信息: * 1、虛擬機加載的類信息 * 2、常量池 * 3、靜態變量 * 4、即時編譯后的代碼 * */ public class MetaspaceErrorDemo { static class OOMTest { } public static void main(String[] args) { int count = 0; try { //cglib不斷創建類,模擬Metaspace空間溢出,我們不斷生成類往元空間中灌,超過元空間大小后就會拋出元空間移除的錯誤 while (true) { count++; Enhancer enhancer = new Enhancer(); enhancer.setSuperclass(OOMTest.class); enhancer.setUseCache(false); enhancer.setCallback(new MethodInterceptor() { @Override public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { return methodProxy.invokeSuper(o, args); } }); enhancer.create(); } } catch (Throwable e) { System.out.println('************多少次后發生了異常:' + count); e.printStackTrace(); } } }

以上就是Java虛擬機常見內存溢出錯誤匯總的詳細內容,更多關于Java虛擬機內存溢出的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
婷婷精品在线| 亚洲小说春色综合另类电影| 亚洲激情不卡| 亚洲va中文在线播放免费| 日本亚州欧洲精品不卡| 亚洲理论在线| 日本亚洲欧洲无免费码在线| 亚洲欧美日本国产专区一区| 久久国产精品毛片| 日韩不卡一二三区| 国产美女久久| 国产精品亚洲片在线播放| 亚洲精品免费观看| 亚洲网址在线观看| 日韩一区免费| 国产视频一区二| 你懂的亚洲视频| 国产精品99一区二区三| 成人福利av| 国内精品福利| 久久av在线| 日韩精品第一| 欧美日韩伊人| 精品国产亚洲一区二区三区大结局| 国产极品一区| av资源中文在线天堂| av一区在线| 欧美一区二区三区激情视频| 午夜视频精品| 午夜电影一区| 久久久久97| 999久久久免费精品国产| 最新日韩欧美| 欧美在线观看天堂一区二区三区| 久久99蜜桃| 日本在线高清| 日韩午夜精品| 国产毛片精品| 电影天堂国产精品| 国产精品社区| 国产毛片久久久| 日韩免费福利视频| 1024精品久久久久久久久| 亚洲在线网站| 国产精品美女在线观看直播| 中文一区一区三区高中清不卡免费| 免费精品国产的网站免费观看| 丝袜亚洲另类欧美| 另类综合日韩欧美亚洲| 日韩精品一区二区三区免费观看| 免费日韩av片| 精品国产亚洲日本| 亚洲欧美日韩高清在线| 91精品啪在线观看国产爱臀| 欧美日韩国产观看视频| 美女精品一区| 精品视频自拍| 在线国产一区| 国产美女亚洲精品7777| 在线成人动漫av| 日韩不卡手机在线v区| 中文字幕在线看片| 亚洲人成网77777色在线播放| 国产一区二区三区亚洲综合| 乱人伦精品视频在线观看| 久久精品一本| 日韩午夜av| 国产日韩电影| 日本三级亚洲精品| 久久五月天小说| 国产精品嫩模av在线| 国产视频一区三区| 久久久成人网| 中文字幕成人| 亚洲免费在线| 久久中文在线| 在线亚洲精品| 精品亚洲免a| 免费视频一区二区| 高清一区二区三区av| 亚洲香蕉久久| 99久久精品网| 精品久久久中文字幕| 蜜桃91丨九色丨蝌蚪91桃色| 欧美日韩在线观看首页| 国产香蕉精品| 国产视频一区免费看| 中文字幕高清在线播放| 亚洲精品国产偷自在线观看| 国产aa精品| 久久久久久夜| 亚洲综合三区| 蜜桃一区二区三区在线| 中文字幕日韩亚洲| 日韩1区2区日韩1区2区| 国产精品99久久免费| 亚洲免费毛片| 国产不卡人人| 欧美自拍一区| 亚洲作爱视频| 久久精品亚洲人成影院| 亚洲午夜黄色| 日韩精品91亚洲二区在线观看| 久久精品国产亚洲一区二区三区| 一区二区日韩免费看| 亚洲精品成人| 欧美va天堂| 日韩欧美网址| 国产拍在线视频| 国产999精品在线观看| 妖精视频成人观看www| 久久视频一区| 天堂资源在线亚洲| 欧美日韩免费看片| 国产精品欧美在线观看| 深夜福利亚洲| 亚洲成a人片| 亚洲制服少妇| 亚洲精品网址| 涩涩av在线| 免费一级欧美片在线观看网站| 日本一区二区三区视频在线看| 国产日韩综合| 蜜臀久久99精品久久久画质超高清 | 亚洲激情黄色| 2023国产精品久久久精品双| 欧美影院三区| 欧美aa国产视频| 欧美好骚综合网| 国产成人调教视频在线观看| 蜜桃精品视频| 国产精品最新自拍| 国产精品久久久久久久久久妞妞| 国产剧情在线观看一区| 久久99影视| 精品一区二区三区亚洲| 久久的色偷偷| 精品国产乱码久久久| 精品九九在线| 久久精品主播| 香蕉人人精品| 国产v日韩v欧美v| 免费在线观看一区二区三区| 岛国精品一区| 国产麻豆一区二区三区精品视频| 国产高清亚洲| 精品国产乱码久久久| 日韩不卡手机在线v区| 亚洲一级特黄| 99久久久国产精品美女| 伊人久久大香线蕉av不卡| 日韩欧美精品综合| 国产精品av一区二区| 国产精品三上| 日本午夜精品视频在线观看| 美女久久久久久| 国产成人在线中文字幕| 日韩一区精品| 免费观看久久久4p| 91亚洲精品在看在线观看高清| a国产在线视频| 亚洲1区在线观看| zzzwww在线看片免费| 成人久久一区| 亚洲免费精品| 91亚洲精品视频在线观看 | 美女精品一区| 欧美日韩夜夜| 久久青青视频| 成人精品动漫一区二区三区| 日韩欧美另类中文字幕| 人人爽香蕉精品| 亚洲精品一级| 国产精品1区在线| 欧美日韩中文一区二区| 中文一区一区三区免费在线观 | 日韩精品视频中文字幕| 国产主播一区| 黄色aa久久| 午夜精品网站| 国产免费av一区二区三区| xxxxx性欧美特大| 亚洲婷婷丁香| 美女久久久久久 | 国产精选久久| 国产综合亚洲精品一区二| 中文字幕av亚洲精品一部二部| 你懂的国产精品| 国产亚洲精品久久久久婷婷瑜伽| 国产精品伦一区二区| 五月婷婷亚洲| 国产精品v一区二区三区| 久久国产精品成人免费观看的软件| 亚洲精品极品| 日韩一区三区| 国产日韩一区二区三区在线播放| 在线日韩欧美| 国产欧美视频在线| 欧美日韩中文一区二区| 国产精品视频一区二区三区四蜜臂 |