成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

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

一、引言

從事java開發的小伙伴在平時的開發工作中,應該會遇見各式各樣的異常和錯誤,在實際工作中積累的異常或者錯誤越多,趟過的坑越多,就會使我們編碼更加的健壯,就會本能地避開很多嚴重的坑。以下介紹幾個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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
日韩欧美精品三级| 久久精品免费看| 日韩在线一二三区| 亚洲黑丝一区二区| 中文字幕亚洲精品在线观看| 99精品视频免费在线观看| 8x8x8国产精品| 老司机免费视频一区二区三区| 亚洲电影在线| 国产欧美精品区一区二区三区 | 亚洲大片在线观看| 亚洲毛片视频| 亚洲欧美日韩电影| 99re66热这里只有精品4| 18成人在线视频| 亚洲高清免费| 亚洲人成网站色在线观看| 精品96久久久久久中文字幕无| 久久久久久久久蜜桃| 99视频精品免费视频| 精品久久久久久最新网址| 不卡欧美aaaaa| 久久嫩草精品久久久久| 色综合欧美在线| 久久精品视频网| 欧美激情视频一区二区三区免费| 久久精品视频一区二区| 欧美日韩在线高清| 中文字幕一区二区三区四区不卡 | 亚洲午夜私人影院| 国产精品久久久久久久久久妞妞| 亚洲一区二区三区四区在线| 美玉足脚交一区二区三区图片| 中文字幕av在线一区二区三区| 欧美日韩高清免费| 亚洲日本一区二区| 亚洲综合三区| 美女一区二区在线观看| 欧美精品高清视频| 国产精品一区二区视频| 欧美mv日韩mv亚洲| 色综合视频在线观看| 国产精品国产三级国产三级人妇| 亚洲一二三区在线| 亚洲一区二区三区三| 新狼窝色av性久久久久久| 日韩精品欧美精品| 3d动漫精品啪啪1区2区免费| 成人性视频网站| www国产成人| 国内揄拍国内精品久久| 一区二区欧美国产| 欧洲av在线精品| 国产精品综合一区二区| 久久久久久久久久久黄色| 亚洲激情午夜| 视频一区二区欧美| 日韩亚洲欧美成人一区| 91亚洲男人天堂| 亚洲欧美日韩一区二区三区在线观看| 午夜在线视频观看日韩17c| 免费成人在线视频观看| 欧美一区二区三区日韩视频| 99精品国产热久久91蜜凸| 亚洲色图视频免费播放| 91久久精品网| 国产1区2区3区精品美女| 日本一区二区视频在线观看| 国产日韩一区二区三区| 久久精品国产77777蜜臀| 欧美大片顶级少妇| 伊人激情综合| 日本不卡中文字幕| 欧美大片在线观看一区二区| 一本久道综合久久精品| 激情文学综合丁香| 中文字幕av不卡| 91福利社在线观看| 91免费小视频| 亚洲制服丝袜在线| 日韩免费看网站| 99久久777色| 亚洲va欧美va国产va天堂影院| 日韩午夜激情电影| 亚洲人成高清| 国产精品自拍网站| 日韩伦理电影网| 9191成人精品久久| 欧美激情偷拍| 日韩不卡在线观看日韩不卡视频| 精品福利一区二区三区| 羞羞视频在线观看欧美| 成人高清视频免费观看| 亚洲成av人片一区二区| 久久久国产午夜精品| 色婷婷综合五月| 欧美日韩免费| 国内精品国产成人| 亚洲精品免费看| 日韩你懂的在线播放| 亚洲永久字幕| 99视频超级精品| 免费高清视频精品| 国产精品免费免费| 欧美日韩一区高清| 99爱精品视频| 波波电影院一区二区三区| 视频一区国产视频| 中文在线一区二区| 91精品国产一区二区三区香蕉 | 波多野结衣精品在线| 性感美女久久精品| 日本一区二区成人在线| 欧美日韩不卡视频| 国产日韩欧美一区| 99精品久久只有精品| 精品在线你懂的| 亚洲制服丝袜一区| 国产女人18毛片水真多成人如厕 | 久久91精品国产91久久小草| 亚洲人成影院在线观看| 欧美大片在线观看一区二区| 久久国产精品高清| 国产精品久久7| 国产精品456露脸| 亚洲丝袜自拍清纯另类| 日韩欧美你懂的| 91九色最新地址| 亚洲高清电影| 97se亚洲国产综合在线| 国产原创一区二区三区| 亚洲成人精品一区| 亚洲欧洲在线观看av| 精品国产sm最大网站免费看| 欧美三日本三级三级在线播放| 中文有码久久| 欧美极品一区| 国产99久久久久久免费看农村| 日产精品久久久久久久性色| 有码一区二区三区| 国产精品人妖ts系列视频| 26uuu精品一区二区| 91精品国产欧美日韩| 欧美自拍丝袜亚洲| 鲁大师影院一区二区三区| 在线一区亚洲| 亚洲高清视频一区二区| 女人香蕉久久**毛片精品| 成人毛片在线观看| 国产一区二区三区国产| 蜜臀av性久久久久蜜臀aⅴ流畅| 一区二区三区精品| 亚洲免费在线看| 国产精品成人免费在线| 久久久欧美精品sm网站| 日韩一区二区免费在线电影| 欧美色网站导航| 色婷婷综合久久久中文一区二区| 国产精品免费区二区三区观看| 亚洲区一区二| 一本久道久久综合狠狠爱| 亚洲精选在线| 亚洲精选一区| 日韩午夜av在线| 在线精品一区| 亚洲经典视频在线观看| 一色屋精品视频在线观看网站| 欧美日韩国产综合在线| 欧美日韩一区二区三| 欧美日韩无遮挡| 欧美在线网址| 欧美日韩在线精品一区二区三区| 欧美 日韩 国产在线| 欧美一区二区视频在线| 欧美黄色一区二区| 午夜精品久久久久99热蜜桃导演| 色综合天天综合网天天狠天天 | 欧美在线一二三四区| 91福利国产成人精品照片| 久久资源在线| 国产精品亚洲综合久久| 久久国产精品亚洲77777| 久久裸体视频| 欧美亚洲另类激情小说| 欧美日韩成人综合| 日韩一区二区三区在线| 精品99999| 亚洲国产精品精华液ab| 亚洲欧洲三级电影| 亚洲一区视频在线观看视频| 午夜在线成人av| 美女诱惑一区二区| 国产精品69久久久久水密桃| 成熟亚洲日本毛茸茸凸凹| 99这里只有久久精品视频| 99亚偷拍自图区亚洲| 欧美另类视频在线| 一级日韩一区在线观看| 久久亚裔精品欧美| 欧美三级蜜桃2在线观看|