电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

Java 常見的幾種內(nèi)存溢出異常的原因及解決

瀏覽:101日期:2022-08-13 16:04:16

內(nèi)存溢出的異常有很多,并且每種內(nèi)存溢出都會有不同的異常信息和解決方式,下面會列出常見的幾種內(nèi)存溢出異常

堆內(nèi)存溢出

java.lang.OutOfMemoryError: Java heap space

原因: 當(dāng)堆內(nèi)存不足,并且已經(jīng)達(dá)到JVM設(shè)置的最大值,無法繼續(xù)申請新的內(nèi)存,存活的對象在堆內(nèi)存中無法被回收,那么就會拋出該異常,表示堆內(nèi)存溢出。 當(dāng)一次從數(shù)據(jù)庫查詢大量數(shù)據(jù),堆內(nèi)存沒有足夠的內(nèi)存可以存放大量的數(shù)據(jù) 大量的強(qiáng)引用對象在堆內(nèi)存中存活,GC無法回收這些對象,新創(chuàng)建的對象在新生代無法進(jìn)行分配,F(xiàn)ull GC仍然無法進(jìn)行回收解決方案: 查看當(dāng)前JVM的堆內(nèi)存配置是否太小,可以考慮增加堆內(nèi)存大小

JAVA_OPTS='-server -Xms1024m -Xmx1024m'

表示將堆內(nèi)存的初始值和最大值都設(shè)置為1024m

-Xms設(shè)置堆內(nèi)存的初始值

-Xmx設(shè)置堆內(nèi)存的最大值

-Xms和-Xmx最好設(shè)置相同的內(nèi)存大小,可以防止因?yàn)镴VM頻繁進(jìn)行內(nèi)存的調(diào)整影響穩(wěn)定性和使用

查看代碼中是否有從數(shù)據(jù)庫中一次加載大量數(shù)據(jù)的情況,或者代碼中有大量強(qiáng)引用無法進(jìn)行回收

通過JVM參數(shù):-XX:+HeapDumpOnOutOfMemoryError可以讓虛擬機(jī)在出現(xiàn)內(nèi)存溢出的時(shí)候Dump出當(dāng)前的堆內(nèi)存快照,便于保留快照分析

棧內(nèi)存溢出

java.lang.outOfMemoryError:StackOverFlow Error

原因: 線程請求的棧深度大于虛擬機(jī)允許的最大深度,拋出StackOverflowError 虛擬機(jī)在擴(kuò)展棧時(shí)無法申請到足夠的內(nèi)存空間,拋出OutOfMemoryError 解決方案: 檢查代碼是否出現(xiàn)深度遞歸的情況,或者遞歸的終止條件沒有設(shè)置 如果是線程的棧內(nèi)存空間過小,則通過-Xss設(shè)置每個(gè)線程的棧內(nèi)存空間

默認(rèn)的-Xss參數(shù)的大小應(yīng)該是1M

棧內(nèi)存是線程私有的,如果需要?jiǎng)?chuàng)建更多的線程,那么就需要將每個(gè)線程的棧內(nèi)存空間減小,通過-Xss參數(shù)設(shè)置每個(gè)線程的棧內(nèi)存空間

配置參數(shù): JAVA_OPTS='-server -Xms1024m -Xmx1024m -Xss128k'

jdk8如果沒有配置-Xss默認(rèn)大小為512k

-Xss 設(shè)置每個(gè)線程的堆棧大小,一般默認(rèn)512~1024kb,和jdk版本有關(guān)

方法區(qū)和運(yùn)行時(shí)常量池內(nèi)存溢出

java.lang.outOfMemoryError: PermGen space

原因: 方法區(qū)存放的是Class的相關(guān)信息,如類名、訪問修飾符、常量池、字段描述、方法描述等,內(nèi)存溢出的原因可能是加載的類過多導(dǎo)致方法區(qū)沒有足夠的內(nèi)存 如果程序中大量使用cglib或者動態(tài)代理等對目標(biāo)類進(jìn)行代理,那么在運(yùn)行時(shí)會生成大量的代理類,如Spring、Hibernate等框架。所以生成的代理類過多導(dǎo)致方法區(qū)沒有足夠的內(nèi)存

解決方案:

減少沒有必要的Class加載,防止方法區(qū)內(nèi)存溢出并且減少程序的編譯時(shí)間 通過JVM參數(shù)設(shè)置方法區(qū)的大小,-XX:PermSize和-XX:MaxPermSize設(shè)置方法區(qū)的大小

運(yùn)行時(shí)常量池是方法區(qū)的一部分,所以增加方法區(qū)的內(nèi)存大小,相當(dāng)于間接的增加了運(yùn)行時(shí)常量池的內(nèi)存大小

本機(jī)直接內(nèi)存溢出

Direct buffer memory

Java 允許應(yīng)用程序通過 DirectByteBuffer 直接訪問堆外內(nèi)存,許多高性能程序通過 DirectByteBuffer 結(jié)合內(nèi)存映射文件(Memory Mapped File)實(shí)現(xiàn)高速 IO

原因:

DirectByteBuffer 的默認(rèn)大小為 64 MB,一旦使用超出限制,就會拋出 Direct buffer memory 錯(cuò)誤。使用NIO則可能會出現(xiàn)該異常

解決方案:

DirectMemory的內(nèi)存大小可以通過-XX:MaxDirectMemorySize指定,如果沒有設(shè)置,則默認(rèn)和Java堆最大值(-Xmx)一樣

元空間內(nèi)存溢出

Metaspace

Jdk8 之后使用元空間(metaspace)代替永久代,元空間和永久代最大的區(qū)別是元空間的內(nèi)存使用的是本地內(nèi)存,而永久代使用的是JVM的內(nèi)存

永久代、元空間都是方法區(qū)的實(shí)現(xiàn),方法區(qū)是規(guī)范

原因:

元空間中存儲的是類信息、常量池、方法描述等信息,直接使用本地內(nèi)存,當(dāng)本地內(nèi)存不足的時(shí)候,會拋出OutOfMemoryError:Metaspace異常

解決方案:

雖然元空間的內(nèi)存不是由JVM控制,不過可以通過JVM參數(shù)來設(shè)置分配的內(nèi)存空間的大小-XX:MaxMetaspaceSize配置參數(shù)

以上就是Java 常見的幾種內(nèi)存溢出異常及解決的詳細(xì)內(nèi)容,更多關(guān)于Java 內(nèi)存溢出的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 搪瓷搅拌器,搪玻璃搅拌器,搪玻璃冷凝器_厂家-淄博越宏化工设备 | 油缸定制-液压油缸厂家-无锡大鸿液压气动成套有限公司 | 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 全温度恒温培养摇床-大容量-立式-远红外二氧化碳培养箱|南荣百科 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | 电磁流量计厂家_涡街流量计厂家_热式气体流量计-青天伟业仪器仪表有限公司 | 单柱拉力机-橡胶冲片机-哑铃裁刀-江都轩宇试验机械厂 | 镀锌角钢_槽钢_扁钢_圆钢_方矩管厂家_镀锌花纹板-海邦钢铁(天津)有限公司 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 | 超声波成孔成槽质量检测仪-压浆机-桥梁预应力智能张拉设备-上海硕冠检测设备有限公司 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 泰安塞纳春天装饰公司【网站】| 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 不锈钢螺丝 - 六角螺丝厂家 - 不锈钢紧固件 - 万千紧固件--紧固件一站式采购 | 胶原检测试剂盒,弹性蛋白检测试剂盒,类克ELISA试剂盒,阿达木单抗ELISA试剂盒-北京群晓科苑生物技术有限公司 | 双舌接地线-PC68数字式高阻计-ZC36|苏海百科| 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 武汉创亿电气设备有限公司_电力检测设备生产厂家 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 浴室柜-浴室镜厂家-YINAISI · 意大利设计师品牌 | 咿耐斯 |-浙江台州市丰源卫浴有限公司 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 2-羟基泽兰内酯-乙酰蒲公英萜醇-甘草查尔酮A-上海纯优生物科技有限公司 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 刺绳_刀片刺网_刺丝滚笼_不锈钢刺绳生产厂家_安平县浩荣金属丝网制品有限公司-安平县浩荣金属丝网制品有限公司 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 编织人生 - 权威手工编织网站,编织爱好者学习毛衣编织的门户网站,织毛衣就上编织人生网-编织人生 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 蔡司三坐标-影像测量机-3D扫描仪-蔡司显微镜-扫描电镜-工业CT-ZEISS授权代理商三本工业测量 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 重庆中专|职高|技校招生-重庆中专招生网 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 水压力传感器_数字压力传感器|佛山一众传感仪器有限公司|首页 | 防勒索软件_数据防泄密_Trellix(原McAfee)核心代理商_Trellix(原Fireeye)售后-广州文智信息科技有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 |