jvm內(nèi)存溢出分析
概述
jvm中除了程序計(jì)數(shù)器,其他的區(qū)域都有可能會(huì)發(fā)生內(nèi)存溢出
內(nèi)存溢出是什么?
當(dāng)程序需要申請(qǐng)內(nèi)存的時(shí)候,由于沒有足夠的內(nèi)存,此時(shí)就會(huì)拋出OutOfMemoryError,這就是內(nèi)存溢出
內(nèi)存溢出和內(nèi)存泄漏有什么區(qū)別?
內(nèi)存泄漏是由于使用不當(dāng),把一部分內(nèi)存“丟掉了”,導(dǎo)致這部分內(nèi)存不可用。
當(dāng)在堆中創(chuàng)建了對(duì)象,后來沒有使用這個(gè)對(duì)象了,又沒有把整個(gè)對(duì)象的相關(guān)引用設(shè)為null。此時(shí)垃圾收集器會(huì)認(rèn)為這個(gè)對(duì)象是需要的,就不會(huì)清理這部分內(nèi)存。這就會(huì)導(dǎo)致這部分內(nèi)存不可用。
所以內(nèi)存泄漏會(huì)導(dǎo)致可用的內(nèi)存減少,進(jìn)而會(huì)導(dǎo)致內(nèi)存溢出。
用到的jvm參數(shù)
下面為了說明溢出的情景,會(huì)執(zhí)行一些實(shí)例代碼,同時(shí)需要給jvm指定參數(shù)
- -Xms 堆最小容量(heap min size)
- -Xmx 堆最大容量(heap max size)
- -Xss 棧容量(stack size)
- -XX:PermSize=size 永生代最小容量
-
-XX:MaxPermSize=size 永生代最大容量
堆溢出
堆是存放對(duì)象的地方,那么只要在堆中瘋狂的創(chuàng)建對(duì)象,那么堆就會(huì)發(fā)生內(nèi)存溢出。
下面做一個(gè)堆溢出的實(shí)驗(yàn)
執(zhí)行這段代碼的時(shí)候,要給jvm指定參數(shù)
//jvm參數(shù):-Xms20m -Xmx20m public class
延伸閱讀
- ssh框架
2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖
2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe
2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】
2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞
2017-07-26
- 從棧不平衡問題 理解 calling convention
2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明
2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解
2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析
2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二)
2017-07-26
學(xué)習(xí)是年輕人改變自己的最好方式