java应用高内存占用
在java虛擬機(jī)中,內(nèi)存分為三個(gè)代:新生代(New), 老生代(Old)、永久代(Perm)
?
新生代: 新建的對(duì)象都存放這里
老生代:存放從新生代中遷移過(guò)來(lái)的生命周期較久的對(duì)象。新生代和老生代共同組成了堆內(nèi)存
永久代:非堆內(nèi)存組成部分。主要加載的Class類級(jí)對(duì)象和class本身,method,field等等
如果出現(xiàn)java.lang.OutOfMemoryError: Java heap space異常,說(shuō)明堆內(nèi)存不夠
原因有二:
(1)Java虛擬機(jī)的堆內(nèi)存設(shè)置不夠,可以通過(guò)參數(shù)-Xms、-Xmx來(lái)調(diào)整。
(2)代碼中創(chuàng)建了大量大對(duì)象,并且長(zhǎng)時(shí)間不能被垃圾收集器收集(存在被引用)。
出現(xiàn)java.lang.OutOfMemoryError: PermGen space,說(shuō)明是永久代Perm內(nèi)存設(shè)置不夠。
一般出現(xiàn)這種情況,都是程序啟動(dòng)需要加載大量的第三方j(luò)ar包
例如:在一個(gè)Tomcat下部署了太多的應(yīng)用。
?
java.lang.OutOfMemoryError: Java heap space異常故障排查,下面是分析排查步驟
1、通過(guò)top命令找出內(nèi)存占用高的java進(jìn)程(M鍵按內(nèi)存排序)
2、使用jmap -histo:live [pid] 分析具體的對(duì)象數(shù)目和占用內(nèi)存大小,從而定位代碼
注意:使用jmap命令會(huì)進(jìn)行一次fgc
轉(zhuǎn)載于:https://www.cnblogs.com/sellsa/p/8931266.html
總結(jié)
以上是生活随笔為你收集整理的java应用高内存占用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【PAT】1007. 素数对猜想 (20
- 下一篇: linux初级学习笔记七:linux用户