总结的内存溢出

总结的内存溢出

ID:28041483

大小:138.00 KB

页数:11页

时间:2018-12-07

总结的内存溢出_第1页
总结的内存溢出_第2页
总结的内存溢出_第3页
总结的内存溢出_第4页
总结的内存溢出_第5页
资源描述:

《总结的内存溢出》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、1、JVM的内存模型NewRatio=/n-------------------1-----------------------------NewSize<1)O2.COOldSpaceEdenScpSap<0caTEeFcoewroCLmSurvivorRatio=n

2、PermSte

3、TotalHeapSize从大的方而来讲,JVM的内存模型分为两大块:永久性内存(Permanentspace)和堆内存(heapspace)。栈内存(stackspace)—般不归在JVM内存模型中,找内存属于线程级别。每个线程都有独立的栈内存空间。•YoungGen:年轻代,包括1个Eden区和2个Surv

4、ivor区,新创建的对象(大部分为短周期的对象)将进入这个区,虚拟机会频繁地对这个区进行垃圾回收。•OldGen:年老代,当对象在YoungGen呆地足够久(经过几次的拉圾回收仍然存在)或YoungGen空间不足时,对象将进入OldGen,由于一般是生命周期比较长的对象,因此虚拟机对这块内存的回收频度会比较低,一旦回收,使用的将是一个耗时的FullGC,另外,一旦堆空间不足时,虚拟机也会尝试去回收这个区。•PermGen:持久代,一些常量定义和类、方法声明及其bytecode都会放在这个区。1.1PermanentspacePermanentspace是指内存的永久保存区域,主要用于存放加载的

5、class类级对象如class本身、method、field等。它和存放类实例的Heap区域不同,GC(GarbageCoolection)不会卉:主程序运行期对Permanentspace进行淸理。如果应用屮有很有class的ifi,且permanentspace设賈得比较小就有可能会出现这样的错误。Permanentspace大小的设罝:-XX:PermSize用于设賈永久保存区域初始人小;-XX:MaxPermSize用于设賈永久保存区域的最大值。1.2HeapspaceHeapspace巾OldGeneration和NewGeneration组成,OldGeneration存放生命周期

6、长久的实例对象,而新的对象实例一般放在NewGenerationoNewGeneration可再分为Eden区、Survivor区,新对象实例总是首先放在Eden区,Survivor作为Eden区和Old区的缓冲,可以叫Old区转移活动的对象实例。其默认空间(即-Xms)是物理A存的1/64,最大空间(-Xmx)是物理内存的1/4。如果闪存剩余不到40%,JVM就会增大堆到Xmx设置的伉,内存剩余超过70%,JVM就会减小堆到Xms设置的伉。所以服务器的Xmx和Xms设置一般应该设置相同避免每次GC后都要调整虚拟机堆的大小。注意:如果Xms超过了Xmx值,或者堆最大值和非堆最大值的总和超过了物

7、理内存或者操作系统的最大限制都会引起服务器启动不起来。垃圾回收分多级,0级为全部(Full)的垃圾回收,会回收OLD段屮的垃圾;1级或以上为部分垃圾回收,只会回收New中的垃圾,内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java对象的情况。当一个URL被访问时,内存屮请过程如下:A.JVM会试阁为相关Java对象在Eden区屮初始化一块内存区域B.当Eden空间足够时,闪存屮请结束。否则到下一步C.JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收),释放后若Eden空间仍然不足以放入新对象,则试阁将部分Eden屮活跃对象放入Survivor区

8、D.Survivor区被用来作为Eden及OLD的屮间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区E.当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)F.完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建N存区域,则出现noutofmemory错误"、2、内存分配的相关参数ms/mx:定义NEW+OLD段的总尺寸,ms为JVM启动时NEW+OLD的内存大小;mx为最大可占用的NEW+OLDA存大小。在用户生产环境上一般将这两个值设为相同,以减

9、少运行期间系统在内存申请上所花的开销。NewSize/MaxNewSize:定义NEW段的尺、bNewSize为JVM启动时NEW的内存大小;MaxNevvSize为最大可占用的NEW内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。PermSize/MaxPermSize:定义Perm段的尺、j,PermSize为JVM启动时Perm的存大小;MaxPe

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。