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

您的位置:首頁技術(shù)文章
文章詳情頁

Java虛擬機(jī)常見內(nèi)存溢出錯(cuò)誤匯總

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

一、引言

從事java開發(fā)的小伙伴在平時(shí)的開發(fā)工作中,應(yīng)該會(huì)遇見各式各樣的異常和錯(cuò)誤,在實(shí)際工作中積累的異常或者錯(cuò)誤越多,趟過的坑越多,就會(huì)使我們編碼更加的健壯,就會(huì)本能地避開很多嚴(yán)重的坑。以下介紹幾個(gè)Java虛擬機(jī)常見內(nèi)存溢出錯(cuò)誤。以此警示,避免生產(chǎn)血案。

二、模擬Java虛擬機(jī)常見內(nèi)存溢出錯(cuò)誤

1、內(nèi)存溢出之棧溢出錯(cuò)誤

package com.jayway.oom; /** * 棧溢出錯(cuò)誤 * 虛擬機(jī)參數(shù):-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、內(nèi)存溢出之堆溢出錯(cuò)誤

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

3、內(nèi)存溢出之GC超過執(zhí)行限制錯(cuò)誤

package com.jayway.oom; import java.util.ArrayList; import java.util.List; /** * GC超過執(zhí)行限制錯(cuò)誤 * 虛擬機(jī)參數(shù):-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:MaxDirectMemorySize=5m * * 拋出異常:Exception in thread 'main' java.lang.OutOfMemoryError: GC overhead limit exceeded * * 導(dǎo)致原因:GC回收時(shí)間過長會(huì)拋出OutOfMemoryError,何為過長,即超過98%的cpu時(shí)間用來做GC垃圾回收 * 但是回收效果甚微,僅僅只有2%的CPU時(shí)間用來用戶程序的工作,這種狀態(tài)是很糟糕的,程序在不斷地GC * 形成惡性循環(huán),CPU的使用率一直是滿負(fù)荷的,正經(jīng)活卻沒有干,這種情況虛擬機(jī)只好拋出錯(cuò)誤來終止程序的執(zhí)行 * * 不斷地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、內(nèi)存溢出之直接內(nèi)存溢出錯(cuò)誤

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

5、內(nèi)存溢出之無法創(chuàng)建新的本地線程

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

6、內(nèi)存溢出之元空間溢出錯(cuò)誤

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; /** * 元空間溢出錯(cuò)誤 * 拋出異常:java.lang.OutOfMemoryError: Metaspace * * 設(shè)置虛擬機(jī)參數(shù):-XX:MetaspaceSize=8m -XX:MaxMetaspaceSize=8m * * 描述:Java8及以后的版本使用Metaspace來替代了永久代。metaspace是方法區(qū)在HotSpot中的實(shí)現(xiàn),它與持久代最大的區(qū)別在于 * Metaspace并不在虛擬機(jī)內(nèi)存中而是在本地內(nèi)存中。 * * 元空間存儲(chǔ)了以下信息: * 1、虛擬機(jī)加載的類信息 * 2、常量池 * 3、靜態(tài)變量 * 4、即時(shí)編譯后的代碼 * */ public class MetaspaceErrorDemo { static class OOMTest { } public static void main(String[] args) { int count = 0; try { //cglib不斷創(chuàng)建類,模擬Metaspace空間溢出,我們不斷生成類往元空間中灌,超過元空間大小后就會(huì)拋出元空間移除的錯(cuò)誤 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('************多少次后發(fā)生了異常:' + count); e.printStackTrace(); } } }

以上就是Java虛擬機(jī)常見內(nèi)存溢出錯(cuò)誤匯總的詳細(xì)內(nèi)容,更多關(guān)于Java虛擬機(jī)內(nèi)存溢出的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩深夜视频| 日韩精品高清不卡| 不卡一二三区| 成人免费电影网址| 亚洲国产综合在线看不卡| 红桃视频欧美| 日韩不卡在线观看日韩不卡视频| 亚洲精品无吗| 国产精品手机在线播放| 国产精品久久观看| 在线综合欧美| 日韩精品欧美大片| 美女国产精品| 国产毛片精品| 精品免费av在线| 日韩中文字幕亚洲一区二区va在线| 国产日韩一区二区三区在线| 色一区二区三区四区| 一本一道久久a久久精品蜜桃| 亚洲欧美日本国产| 精品黄色一级片| 黄色亚洲精品| 欧美自拍一区| 亚洲成a人片| 免费久久精品视频| 麻豆视频一区| 国产毛片久久| 国产福利一区二区精品秒拍| 久久在线电影| 欧美一区不卡| 日韩国产专区| 免费日本视频一区| 成人亚洲一区| 亚洲日产国产精品| 国产白浆在线免费观看| 久久先锋影音| 成人在线视频免费| 美女亚洲一区| 久久av超碰| 午夜在线视频一区二区区别| 久久精品国内一区二区三区| 亚洲一区二区三区四区五区午夜| 精品淫伦v久久水蜜桃| 91九色精品| 麻豆精品新av中文字幕| 亚洲一区二区三区四区五区午夜| 精品美女在线视频| 亚洲精品日本| 一本大道色婷婷在线| 91麻豆精品| 黄色成人91| 超碰成人av| 一区二区日韩免费看| 精品丝袜在线| 国产精品一二| 免费在线欧美视频| 久久理论电影| 久久精品色播| 青青国产精品| 美女国产精品| 999国产精品| 国产精品2区| 蜜桃免费网站一区二区三区| 欧美精选视频一区二区| 牛牛精品成人免费视频| 丝袜美腿一区二区三区| 亚洲综合在线电影| 国产亚洲观看| 亚洲一二av| 亚洲国产专区| 日韩中文首页| 欧美成a人片免费观看久久五月天| 中文字幕免费精品| 国产亚洲一区在线| 欧美日韩一区二区三区视频播放| 九九99久久精品在免费线bt| 久久国产三级精品| 亚洲免费毛片| 丝瓜av网站精品一区二区| 久久久久久久久久久妇女| 精品久久美女| 久久精品国产久精国产爱| 亚洲三级精品| 中文一区一区三区免费在线观| 欧美一区二区三区激情视频 | 日韩精品视频在线看| 精品国产美女a久久9999| 欧美日韩中出| 欧美亚洲综合视频| 日韩一二三区在线观看| 久久99伊人| 亚洲欧美日韩在线观看a三区| 亚洲高清激情| 午夜精品亚洲| 在线综合视频| 不卡中文字幕| 日韩午夜av| 亚洲在线一区| 免费的成人av| 亚洲欧洲av| 视频国产精品| 日韩精品午夜视频| 91午夜精品| 国产精区一区二区| 国产精品视频一区二区三区综合| 国产剧情一区二区在线观看| 国产精品三p一区二区| 国产精品66| 国产拍在线视频| 99视频精品视频高清免费| 久久裸体视频| 亚洲激情不卡| 亚洲免费专区| 国产精品久av福利在线观看| 久久影视三级福利片| 亚洲国产福利| 激情五月色综合国产精品| 鲁大师成人一区二区三区| 日本不卡在线视频| 欧美国产专区| 日本а中文在线天堂| re久久精品视频| 亚洲久久在线| 国产精品久久久免费| 国产美女视频一区二区| 国产免费久久| 成人国产精品| 不卡福利视频| 免费日韩精品中文字幕视频在线| 欧美日韩免费观看一区=区三区| 亚洲欧美综合| 丝袜美腿亚洲一区| 91欧美精品| 色偷偷偷在线视频播放| 日韩欧美午夜| 欧美日韩在线观看视频小说| 亚洲国产成人精品女人| 亚洲电影在线一区二区三区| 日韩精品一卡| 蜜桃视频第一区免费观看| 日韩中文字幕区一区有砖一区| 最新亚洲国产| 国产欧美91| 麻豆视频在线观看免费网站黄| 91看片一区| av一区二区高清| 国产精品av久久久久久麻豆网| 久久久久久久久99精品大| 亚洲免费黄色| 日韩精品一区二区三区中文在线 | 亚洲成av在线| 欧美特黄a级高清免费大片a级| 亚洲欧美视频一区二区三区| 在线一区视频观看| 亚洲欧美专区| 精品中文在线| 欧美精选视频一区二区| 影音先锋国产精品| 欧美日韩视频免费看| 国产一区二区三区探花| 久久精品在线| 天使萌一区二区三区免费观看| 欧美性www| 91日韩免费| 伊人久久大香线蕉av不卡| 欧美日韩1区| 日本免费久久| 免费在线观看不卡| 国产精品sm| 桃色av一区二区| 日韩高清在线观看一区二区| 精品国产精品久久一区免费式| 亚洲婷婷在线| 日韩精品社区| 久久视频一区| 日韩高清在线观看一区二区| sm久久捆绑调教精品一区| 999视频精品| 日本在线视频一区二区| 精品视频在线一区二区在线| 欧美jjzz| 久久国产欧美日韩精品| 精品国产鲁一鲁****| 日韩一区免费| 国产一区二区精品福利地址| 国产色综合网| 久久影视三级福利片| 国产亚洲午夜| 精品九九久久| 蘑菇福利视频一区播放| 卡一卡二国产精品| 麻豆亚洲精品| 久久中文字幕av| 国产精品免费99久久久| 欧美91视频| 精品中文字幕一区二区三区 | 久久99免费视频| 久久影院一区二区三区| 日本亚洲最大的色成网站www| 午夜欧美巨大性欧美巨大|