- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
JVM内存结构问题JVM为两块:PermanentSapce和HeapSpace,其中:
Heap={Old+NEW={Eden,from,to}}。PermantSpace负责保存反射对象,一般不用配置。JVM的Heap区可以通过-X参数来设定。
当一个URL被访问时,内存申请过程如下:
JVM会试图为相关Java对象在Eden中初始化一块内存区域
当Eden空间足够时,内存申请结束。否则到下一步
JVM试图释放在Eden中所有不活跃的对象(这属于1或更高级的垃圾回收),释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区
Survivor区被用来作为Eden及OLD的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区
当OLD区空间不够时,JVM会在OLD区进行完全的垃圾收集(0级)
完全垃圾收集后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”outofmemory错误”
JVM调优建议:
ms/mx:定义YOUNG+OLD段的总尺寸,ms为JVM启动时YOUNG+OLD的内存大小;mx为最大可占用的YOUNG+OLD内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。NewSize/MaxNewSize:定义YOUNG段的尺寸,NewSize为JVM启动时YOUNG的内存大小;MaxNewSize为最大可占用的YOUNG内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
PermSize/MaxPermSize:定义Perm段的尺寸,PermSize为JVM启动时Perm的内存大小;MaxPermSize为最大可占用的Perm内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
SurvivorRatio:设置Survivor空间和Eden空间的比例
内存溢出的可能性
OLD段溢出
这种内存溢出是最常见的情况之一,产生的原因可能是:
设置的内存参数过小(ms/mx,NewSize/MaxNewSize)
程序问题
单个程序持续进行消耗内存的处理,如循环几千次的字符串处理,对字符串处理应建议使用StringBuffer。此时不会报内存溢出错,却会使系统持续垃圾收集,无法处理其它请求,相关问题程序可通过ThreadDump获取(见系统问题诊断一章)单个程序所申请内存过大,有的程序会申请几十乃至几百兆内存,此时JVM也会因无法申请到资源而出现内存溢出,对此首先要找到相关功能,然后交予程序员修改,要找到相关程序,必须在Apache日志中寻找。
当Java对象使用完毕后,其所引用的对象却没有销毁,使得JVM认为他还是活跃的对象而不进行回收,这样累计占用了大量内存而无法释放。由于目前市面上还没有对系统影响小的内存分析工具,故此时只能和程序员一起定位。
Perm段溢出
通常由于Perm段装载了大量的Servlet类而导致溢出,目前的解决办法:
将PermSize扩大,一般256M能够满足要求
若别无选择,则只能将servlet的路径加到CLASSPATH中,但一般不建议这么处理
CHeap溢出
系统对CHeap没有限制,故CHeap发生问题时,Java进程所占内存会持续增长,直到占用所有可用系统内存参数说明:
图表为参数说明对照表 :
JVM堆内存(heap)设置选项
JVM堆内存(heap)设置选项
参数格式
说
明
通过这个选项可以设置Java新对象生产堆内存。在通常情况下这个选项的数值为1
024的整数倍并且大于1MB。这个值的取值规则为,一般情况下这个值-XX:NewSize是最
设置新对象生产堆内存
-XX:NewSi
大堆内存(maximumheapsize)的四分之一。增加这个选项值的大小是为了增大较大
(Settingthe
ze
数量的短生命周期对象
Newgenerationheapsize)
增加Java新对象生产堆内存相当于增加了处理器的数目。并且可以并行地分配内存,
但是请注意内存的垃圾回收却是不可以并行处理的
JVM堆内存(heap)设置选项
参数格式 说 明
设置最大新对象生产 通过这个选项可以设置最大Java新对象生产堆内存。通常情况下这个选项的数值
堆
您可能关注的文档
- IP Phone & User append分析和总结分析和总结.docx
- ipad充电柜产品说明书.docx
- ipcproblem分析和总结分析和总结.docx
- iPhone6上市会再次带动移动电源井喷.docx
- iPhone新技能苹果手机怎么恢复删除的短信.docx
- IPL 产品简介分析和总结.docx
- IPQAM技术分析和总结.docx
- IPQC的个人简历模板.docx
- IPStor智能容灾解决方案.docx
- IPSWAF防火墙比较分析和总结.docx
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)