分析Java 堆
来源:互联网 发布:华西电子盘软件下载 编辑:程序博客网 时间:2024/05/19 18:13
分析Java 堆
一.常见的内存溢出:堆溢出,直接内存溢出,永久区溢出等
二.堆溢出
1.原因一:分配在堆上的对象都持有强引用,导致无法回收,绝大多数内存溢出都是这种情况
2.解决方案:
1.使用-Xmx 调整堆得空间大小
2.合理优化程序(置空对象)
3.原因二:GC 的低效率引起的 OOM
4.解决方案:
1.增大堆空间
2.使用 -XX:-UseGCOverHeadLimit 禁止该种 OOM 提示的产生
三.直接内存溢出
1.原因一:使用 NIO 不当,导致直接内存溢出
2.解决方案:
1.设置合理的 -XX:MaxDirecMemorySize 大小(当直接内存达到设置的大小,触发一次 GC)
2.减小堆的大小,但是这样做会增加堆溢出的风险
3.原因二:开启的线程太多(每一个线程的开启都需要占用系统内存,线程的空间在堆外分配)
4.解决方案:
1.减少每一个线程所占内存空间的大小,使用 -Xss 设置,但是会增加栈溢出的风险
2.减少堆的大小,预留更多的空间用于创建线程
四.永久区溢出
1.原因:系统定义了太多的类型,类的元数据信息(JDK1.8 中没有永久区,元数据区替代了永久区)
2.解决方案:
1.增加 MaxPermSize 的值
2.减少系统需要的类
3.使用 ClassLoader 合理加载各个类,并定期进行回收
五.内存泄露
不在使用的对象占据内存不被释放,可使用内存不断减小,导致内存溢出
六.建议
不在使用的对象,将对象置为 null ,减少内存溢出的风险
阅读全文
0 0
- 分析Java堆
- java堆内存分析
- 分析Java堆
- 分析Java 堆
- 7 分析java堆
- java堆、栈、内存分析
- java堆、栈、内存分析.
- java堆、栈、内存分析
- java堆、栈、内存分析
- Java堆、栈、内存分析
- Java堆、栈、内存分析
- java 运行堆内存分析
- Java 堆、栈、内存分析
- java堆分析工具jmap
- Java虚拟机--分析Java堆(十一)
- Java中堆和栈的分析
- JAVA堆与栈的分析
- google-perftools 分析JAVA 堆外内存
- Dinic 清真模板(数组类型 + 当前弧优化)Poj—1273
- 命运多舛,霉运连连。
- NOJ2211解题笔记
- 单源最短路径(Dijkstra算法)
- 论考试的题目应该是多少年前的原题-解题报告
- 分析Java 堆
- 网络层次分析
- Codeforces Round #416 (Div. 2)-C. Vladik and Memorable Trip
- Kotlin编程之if语句,while循环,when表达式,for循环
- VS2013使用本地GIT管理源代码
- Problem D: 不同交通工具的速度
- 动态代理和IBinder机制
- Understanding glibc malloc
- 新接触-MongoDB、Docker