标题: 优化 Java 垃圾收集的性能——如何利用 IBM Java 虚拟机检测和解决垃圾收集问题
2011-10-09 18:42
901 查看
标题: 优化 Java 垃圾收集的性能——如何利用 IBM Java 虚拟机检测和解决垃圾收集问题
TestFocus焦点测试论坛
堆管理概述
JVM 在初始化的过程中分配堆。堆的大小取决于指定或者默认的最小和最大值以及堆的使用情况。
分配堆可能对可视化堆有所帮助。
Heapbase 表示堆底, heaptop 则表示堆能够增长到的最大绝对值。
差值( heaptop - heapbase )由命令行参数 -Xmx 决定。
该参数和其他命令行参数都是在关于 verbosegc 和命令行参数的 developerWorks 文档中描述的。
heaplimit 指针可以随着堆的扩展上升,随着堆的收缩下降。
heaplimit 永远不能超过 heaptop ,也不能低于使用 -Xms 指定的初始堆大小。
任何时候堆的大小都是 heaplimit - heapbase。
如果整个堆的自由空间比例低于 -Xminf 指定的值(minf 是最小自由空间),堆就会扩展。
如果整个堆的自由空间比例高于 -Xmaxf 指定的值(maxf 是最大自由空间),堆就会收缩。
-Xminf 和 -Xmaxf 的默认值分别是 0.3 和 0.6,因此 JVM 总是尝试将堆的自由空间比例维持在 30% 到 60% 之间。
参数 -Xmine(mine 是最小扩展大小)和 -Xmaxe(maxe 是最大扩展大小)控制扩展的增量。这4个参数对固定大小的堆不起作用(用相等的 -Xms 和 -Xmx 值启动 JVM,这意味着 HeapLimit = HeapTop),因为固定大小的堆不能扩展或收缩。
当 Java 线程请求存储时,如果 JVM 不能分配足够的存储块来满足这个请求,则可以说出现了分配失败(AF)。这时候就不可避免要进行垃圾收集。垃圾收集包括收集所有“不可达的(unreachable)”引用,以便重用它们所占用的空间。
垃圾收集由请求分配的线程执行,是一种 Stop-The-World(STW)机制;执行垃圾收集算法时,Java 应用程序的其他所有线程(除了垃圾收集帮助器线程之外)都被挂起。
TestFocus焦点测试论坛
堆管理概述
JVM 在初始化的过程中分配堆。堆的大小取决于指定或者默认的最小和最大值以及堆的使用情况。
分配堆可能对可视化堆有所帮助。
Heapbase 表示堆底, heaptop 则表示堆能够增长到的最大绝对值。
差值( heaptop - heapbase )由命令行参数 -Xmx 决定。
该参数和其他命令行参数都是在关于 verbosegc 和命令行参数的 developerWorks 文档中描述的。
heaplimit 指针可以随着堆的扩展上升,随着堆的收缩下降。
heaplimit 永远不能超过 heaptop ,也不能低于使用 -Xms 指定的初始堆大小。
任何时候堆的大小都是 heaplimit - heapbase。
如果整个堆的自由空间比例低于 -Xminf 指定的值(minf 是最小自由空间),堆就会扩展。
如果整个堆的自由空间比例高于 -Xmaxf 指定的值(maxf 是最大自由空间),堆就会收缩。
-Xminf 和 -Xmaxf 的默认值分别是 0.3 和 0.6,因此 JVM 总是尝试将堆的自由空间比例维持在 30% 到 60% 之间。
参数 -Xmine(mine 是最小扩展大小)和 -Xmaxe(maxe 是最大扩展大小)控制扩展的增量。这4个参数对固定大小的堆不起作用(用相等的 -Xms 和 -Xmx 值启动 JVM,这意味着 HeapLimit = HeapTop),因为固定大小的堆不能扩展或收缩。
当 Java 线程请求存储时,如果 JVM 不能分配足够的存储块来满足这个请求,则可以说出现了分配失败(AF)。这时候就不可避免要进行垃圾收集。垃圾收集包括收集所有“不可达的(unreachable)”引用,以便重用它们所占用的空间。
垃圾收集由请求分配的线程执行,是一种 Stop-The-World(STW)机制;执行垃圾收集算法时,Java 应用程序的其他所有线程(除了垃圾收集帮助器线程之外)都被挂起。
相关文章推荐
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能
- 优化 Java 垃圾收集的性能
- java 网络编程【7】 如何检测和解决端口冲突问题?
- 优化 Java 垃圾收集器改进系统性能
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析
- 构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)―托管资源优化―垃圾回收机制深度剖析
- 利用预渲染解决优化性能问题IOS
- 优化 Java 垃圾收集器改进系统性能
- java学习之如何解决和检测端口冲突问题
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析
- 破除java神话(一) 垃圾收集解决所有的内存问题
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前篇)—托管资源优化—垃圾回收机制深度剖析
- JAVA基础(37) 如何解决SecureRandom性能问题
- JAVAWEB开发之Hibernate详解(三)——Hibernate的检索方式、抓取策略以及利用二级缓存进行优化、解决数据库事务并发问题
- 【原创】构建高性能ASP.NET站点 第七章 如何解决内存的问题(前中篇)—托管资源优化—监测CLR性能
- 优化 Java 垃圾收集器改进系统性能
- Java性能分析及问题解决(一)虚拟机性能监控和故障处理工具
- java之垃圾,闭关锁国下如何解决maven被墙的问题
- 破除java神话(一) 垃圾收集解决所有的内存问题