内存溢出问题初步分析.doc

内存溢出问题初步分析.doc

ID:49527077

大小:163.00 KB

页数:5页

时间:2020-03-02

内存溢出问题初步分析.doc_第1页
内存溢出问题初步分析.doc_第2页
内存溢出问题初步分析.doc_第3页
内存溢出问题初步分析.doc_第4页
内存溢出问题初步分析.doc_第5页
资源描述:

《内存溢出问题初步分析.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、内存溢出问题初步分析一、内存分类Java虚拟机具有一个堆,堆是运行吋数据区域,所有类实例和数组的内存均从此处分配。堆是在Java虚拟机启动时创建的。在JVM屮堆之外的内存称为非堆内存(Non-heapmemory)"。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Jaw代码可及的内存,是留给开发人员使用的;菲堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存屮。二、监控内存工具与配置

2、常用查看内存工具1、jconsole介绍:一个基于JMX的GUI工具,用于连接正在运行的JVM0优点是JDKH带,不需要下载,用起来比较方便,所需系统资源小;缺点是分析的不够全面。如果Tomcatstart.bat启动配置:1)/tomcat_home/bin/catalina.bat文件屮找到setJAVA_OPTS=%JAVA_OPTS%,示面追加如下参数・Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=8089-Dcom.sun.mana

3、gement.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false2)启动TomcatI程3)Jrl4tj/java_home/bin/jconsole.exe开发屮Debug启动配置:在Eclipse/window/properties/Tomcat/JVMSettings/11[的AppendtoJVMParameters项,点击add按钮添加如下参数:-Dcom.sun.management.jmxremote-Dcom.sun.man

4、agement.jnixremote.port="9004n-Dcom.sun.management.jmxremote.authenticate=,,falseM-Dcom.sun.management.jmxreniote.ssl="false"*丄xisu丄/UpUdlEAddRemoveDownAppendtoJVMParameters^ms256ff^J{mx512rr^J{XJPermS^e=2^F^^X]CMaxPerrnS^e^±JavaJavaEEJDTWeavingJProfiler+Maven王Plug

5、-inDevelopmentSRemoteSystems+Run/Debug+Server-+Tasks+TeamTerminal日TomcatAdvancedJVMSettingsSourcePathTomcatManagerAppi—iirniini之后启动DEBUG后直接运彳亍/java_home/bin/jconsole.exe即可。2、JprofilerJProfiler是一个全功能的Java剖析王具(profiler),专用于分析J2SE和J2EE应用程序。优点:分析全瓯,各个类型占用内存,类、包等占用内存、CP

6、U使用率等都做了全面的分析。可以作为Eclipse插件,安装简单。缺点:付费、占用资源大。三、浙江EPM现状开发吋和实际部署时,应用的都是Tomcat默认内存管理配置。1、部署初始吋内存分配状况最左面条形图到右边依次为:堆内存:EdenSpace/SurvivorSpace/TenuredGen非堆内存:PermGen[share-rw]]/CodeCache/PermGen[shared-rw

7、/PermGen这里主要看:PermGen全程PermanentGenerationspace,是指内存的永久保存区域,:这一部分

8、用于存放Class和Meta的信息,Class在被Load的时候被放入PermGenspace区域,GC不会在主程序运行期对PermGenspace进行清理,启动状态是的具体参数:已使用:49,484Kb分配:49,664Kb最大值:65,536Kb可见刚刚开启程序PermGenspace就已经被吃掉了大半。正常使用发起流程的吋已使用:60,697Kb分配:60,928Kb最大值:65,536Kb这样一来剩余内存很小。如果发起多个流程,装更多的类后,一定会导致内存溢出。(测试了大概有10次流程,每一次会增加0.01-0.02

9、kb内存,有的时候不会增加)2、开发内存分配状况Debug模式启动会iY川更多的内存。启动T稈内存使用情况:非堆内存由左至右:CodeCache/PermGenPermGen使用情况为:已使用:53,579Kb分配:53,760Kb最大值:65,536Kb与Tomcatstart.bat启

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

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

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