Java地内存结构MemoryStructure和垃圾收集GarbageCollection现用现用图解.pdf

Java地内存结构MemoryStructure和垃圾收集GarbageCollection现用现用图解.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实用标准文案 JVM 内存包含如下几个部分: Heap Memory 存放 Java 对象 Non-Heap Memory 存放类加载信息和其它 meta-data Other 存放 JVM 自身代码等 在 JVM启动时,就已经保留了固定的内存空间给 Heap 内存,这部分内存并不一定都会被 JVM 使用, 但是可以确定的是这部分保留的内存不会被其他进程使用。 这部分内存大小由 -Xmx 参数指定。 而另一部分内存在 JVM启动时就分配给 JVM,作为 JVM 的初始 Heap 内存使用。 影响这个的参数是 -Xms 。 默认空余堆内存小于 40%时, JVM 就会增大堆直到 -Xmx 的最大限制,可以由 -XX:MinHeapFreeRatio 指定。 默认空余堆内存大于 70%时, JVM 会减少堆直到 -Xms 的最小限制,可以由 -XX:MaxHeapFreeRatio 指定。 可以通过 -XX:MaxPermSize 设置 Non-Heap大小 . GC 的年代划分 精彩文档 实用标准文案 如果 -Xms 指定的值比 -Xmx 的小,那么两者的差值就是 Virtual 内存值。随着程序的运行, Eden 区、 Tenured 区和 Perm 区会逐渐使用保留的 Virtual 空间。 JVM内存模型中 Heap 区分两大块,一块是 NEW Generation, 另一块是 Old Generation. 在 NewGeneration 中,有一个叫 Eden 的空间,主要是用来存放新生的对象,还有两个 Survivor Spaces (from,to ),它们 的大小总是一样,它们用来存放每次垃圾回收后存活下来的对象。在 OldGeneration 中,主要存放应用程 序中生命周期长的内存对象。在 NewGeneration 块中,垃圾回收一般用 Copying 的算法,速度快。每次 GC 的时候,存活下来的对象首先由 Eden拷贝到某个 SurvivorSpace, 当 Survivor Space 空间满了后 , 剩下 的 live 对象就被直接拷贝到 OldGeneration 中去。因此,每次 GC后,Eden 内存块会被清空。 在 OldGeneration 块中,垃圾回收一般用 mark-compact 的算法,速度慢些,但减少内存要求 . 垃圾回收分多级, 0 级为全部 (Full) 的垃圾回收,会回收 OLD段中的垃圾; 1 级或以上为部分垃圾回收,只 会回收 NEW中的垃圾,内存溢出通常发生于 OLD段或 Perm 段垃圾回收后,仍然无内存空间容纳新的 Java 对象的情况。 还有个 Permanent Generation ,主要用来放 JVM 自己的反射对象, 比如类对象和方法对象等。 关于这个区, 它还提供 String pool ,看下面的例子: [java] view plaincopyprint? 1. String first = abc; 2. String second = new String (abc); 精彩文档 实用标准文案 String first = abc; String second = new String (abc) 第一个对象存贮在 Permanent Generation ,而第二个对象存储在 Heap

文档评论(0)

fkh4608 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档