赞
踩
当程序出现了OOM错误,我们可以使用Jpofiler进行分析错误原因。快速定位到内存泄露的位置,并且获取到堆中的数据。
安装Jprofiler应用和在IDEA中集成Jprofiler插件
我们可以用代码测试一下
配置一下VM参数
运行:
我们可以在Jprofiler应用上查看:
关于参数:
-Xms 设置初始化内存大小;
-Xmx设置最大分配内存。
-XX:+… :设置打印的信息。
例如:
HeapDumpOnOutOfMemoryError
PrintGCDetails
为什么堆中有垃圾而栈中无垃圾?
因为栈中主要是方法引用暂时存放的区域,当方法被应用就会被压入到栈中,使用完毕后就会被弹出栈。而堆中主要存放的是类,方法,变量,常量等,当对象被引用时,真实对象就会在伊甸园区进行创建,调度时可能没被GC处理而进入到幸存区,当幸存区也满的话就会在老年区中存活,这样在堆中就会存在大量的垃圾,需要处理防止堆内存溢出,优化性能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。