Java内存溢出的类型
内存溢出通俗理解就是内存不够,通常在运行大型软件或游戏时,软件或游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。下面小编为大家整理了关于Java内存溢出的类型,一起来看看吧:
1、fMemoryError:PermGenspace
JVM管理两种类型的Java内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,超出了也会导致这块内存的占用过多造成Java内存溢出,或者tomcat热部署时侯不会清理前面加载的环境,只会将context更改为新部署的,非堆存的内容就会越来越多。
PermGenspace的全称是PermanentGenerationspace,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGenspace中,它和存放类实例(Instance)的Heap区域不同,GC(GarbageCollection)不会在主程序运行期对PermGenspace进行清理,所以如果你的应用中有很CLASS的话,就很可能出现PermGenspace错误,这种错误常见在web服务器对JSP进行precompile的.时候。如果你的WEBAPP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
一个最佳的配置例子:(经过验证,自从用此配置之后,再未出现过tomcat死掉的情况)
setJAVA_OPTS=-Xms800m
-Xmx800m-XX:PermSize=128M
-XX:MaxNewSize=256m
-XX:MaxPermSize=256m
2、fMemoryError:Javaheapspace
再来看一下Java内存溢出的第二种情况,第一种情况是个补充,主要存在问题就是出现在这个情况中。其默认空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。如果内存剩余不到40%,JVM就会增大堆到Xmx设置的值,内存剩余超过70%,JVM就会减小堆到Xms设置的值。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。假设物理内存无限大,那么JVM内存的最大值跟操作系统有关,一般32位机是1.5g到3g之间,而64位的就不会有限制了。
注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物理内存或者操作系统的最大限制都会引起服务器启动不起来。
垃圾回收GC的角色
JVM调用GC的频度还是很高的,主要两种情况下进行垃圾回收:
当应用程序线程空闲;另一个是java内存堆不足时,会不断调用GC,若连续回收都解决不了内存堆不足的问题时,就会报outofmemory错误。因为这个异常根据系统运行环境决定,所以无法预期它何时出现。根据GC的机制,程序的运行会引起系统运行环境的变化,增加GC的触发机会。
为了避免这些问题,程序的设计和编写就应避免垃圾对象的内存占用和GC的开销。显示调用()只能建议JVM需要在内存中对垃圾对象进行回收,但不是必须马上回收,一个是并不能解决内存资源耗空的局面,另外也会增加GC的消耗。
-
accp5.0课程介绍
预备课程是免费的课程,主要是为哪些对计算机了解不多的学员准备的,计算机常见的操作、办公软件的使用、基本的计算机词汇在这门课程中讲解。S1课程在开发技能上:熟悉计算机软件技术的基本知识理解程序逻辑、基本的算法使用HTML、表格框架或者DIV布局模式、DreamWe...
-
大连ACCP7.0培训机构
北大青鸟IT培训课程体系全面升级,ACCP7.0全新培养高端化、国际化人才。此次升级更吸引了北大青鸟众多合作外企的注意,30余家名企提出人才委培定制需求;为与企业需求保持同步,培养更多符合市场需求的.人才。课程优势:以就业为导向——ACCP7.0是什么样的课程产品设计...
-
北大青鸟ACCP课程详细介绍
ACCP(AptechCertifiedComputerProfessional)是印度最早从事IT职业教育的Aptech计算机教育公司推出的培养软件程序设计人员的课程体系,由北大青鸟集团于2000年引入中国。下面是小编整理的北大青鸟ACCP课程详细介绍,希望大家认真阅读!数据库技术方面第一学期的《使...
-
2017软件工程师考试计算机基础知识
软件工程师英文是SoftwareEngineer,是从事软件职业的人员的一种职业能力的认证,通过它说明具备了工程师的资格。yjbys小编下面为你整理了关于计算机基础知识的文章,希望对你有所帮助。一、硬件知识1、计算机系统的组成包括硬件系统和软件系统硬件系统分为三种典型...