Sun JDK 1.6内存调优实战与技巧-毕玄
需积分: 10 164 浏览量
更新于2024-07-27
1
收藏 522KB PDF 举报
"Sun JDK 1.6内存管理--调优篇-毕玄"
在Java开发中,Sun JDK 1.6的内存管理是至关重要的,尤其是对于系统的性能和稳定性而言。内存调优的目标通常分为两个主要方面:吞吐量(Throughput)和延迟(Latency)。吞吐量关注的是程序在单位时间内处理的工作量,而延迟则关注的是响应时间,特别是对于那些对实时性要求较高的应用。
调优步骤包括测量(Measure)、设定目标(SetGoal)、调优(Tuning),以及再次测量(Measure)以评估效果。测量过程中需要考虑的因素有:
1. 垃圾收集器(GC)因素:堆的大小(Footprint)、分配速率(AllocateRate)、年轻代生存空间(LDS)、暂停时间(Pause)以及吞吐量(Throughput)。
2. 应用程序因素:响应时间(ResponseTime)和每秒查询量(QPS)。
3. 系统因素:负载(Load)、CPU利用率、I/O性能等。
为了进行测量,开发者可以使用一系列工具,如:
- GC日志(GCLog):记录垃圾收集活动。
- jstat:监控JVM的各种统计信息,包括GC情况。
- jmap:用于获取堆内存映射或dump堆信息。
- sar:系统活动报告,用于监控系统资源使用。
- top:实时显示系统中各个进程的资源占用状况。
调优过程中存在一些误区,即"GC Myth",需要通过实践和理解来破除。选择合适的JVM版本也很关键,32位JVM在Linux上受到3GB地址空间的限制,通常建议堆大小不超过2GB;而64位JVM虽然占用更多内存,但能提供更大的地址空间,且开启`-XX:+UseCompressedOOPS`选项可以减少指针的内存消耗。
针对不同的性能需求,可以选择不同的垃圾收集器:
- 如果吞吐量更重要,可以选择Parallel Old GC,它能有效地处理大量数据并提高整体运行效率。
- 如果延迟更重要,通常先尝试Parallel Old GC,若不满意,可以转向Concurrent Mark Sweep (CMS) GC,它在低延迟方面表现更佳。
内存大小的设置是调优的关键,首先确定堆大小(HeapSizeStartingPoint),然后计算活对象大小(LiveDataSize),并将-Xms和-Xmx设置为活对象大小的3到4倍,以减少Full GC的发生。
降低Full GC执行频率的策略:
- 增大老年代(Old Generation)的大小,但这可能导致其他问题,如内存碎片。
- 减少从新生代(New Generation)晋升到老年代的对象,可以通过调整TenuringThreshold和Survivor Space Size来实现。
案例展示中,比如ItemDetail、TC和Promotion Center等应用,可能需要采取特定的优化策略来降低Full GC的频率和暂停时间,这可能包括进一步减小堆大小,或者调整垃圾收集器的参数设置,以达到理想的性能指标。在实践中,这些模式需要根据具体的应用场景和性能需求进行灵活应用和调整。
2013-01-05 上传
点击了解资源详情
2010-05-02 上传
2012-05-29 上传
shtpzh
- 粉丝: 0
- 资源: 1
最新资源
- 基于C++的G2O图优化库设计源码
- Z_Kang_C_Hoang_Project3
- ModBus-Master.rar_单片机开发_C/C++__单片机开发_C/C++_
- ENVI_Landsat8_LST_V5.3_5.zip
- 所需要的时间图片压缩包
- vim-config:这是我完整的vim配置
- Python库 | jax_data-0.1.1-py3-none-any.whl
- leanft-testng-template
- gas spring.zip__
- 最新JAVA面试题总结之数据库.zip
- bamboo-monitor-main.zip
- vc换肤,制作仿苹果电脑的窗口界面
- 基于同态加密的联邦学习安全聚合系统python源代码(高分项目).zip
- 基于微信小程序的校友会系统的实现(源代码+论文+说明文档+PPT)-计算机专业精品毕业设计和课程设计
- 维修工具图片及打好的标签,共包含3k+张图片,其中十一种类别工具,如扳手,螺丝刀,钳子等等
- fronteee:我的前端堆栈样板