码迷,mamicode.com
首页 > 其他好文 > 详细

jvm虚拟机(一):jvm内存溢出问题的分析与解决

时间:2019-10-02 20:45:51      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:lips   ror   inter   eclipse   except   异常   模拟   clip   图片   

??学习一下java虚拟机系列,之一

添加运行参数
-XX:+HeapDumpOnOutOfMemoryError -Xms30m -Xmx30m

-XX:+HeapDumpOnOutOfMemoryError 这个参数会生成堆栈快照,用于定位异常

模拟内存溢出的场景,简单代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package top.alertcode.demo.jvm;

import java.util.ArrayList;


* @author alertcode
* @date 2018-04-03
* @copyright alertcode.top
*/
public class {


* 运行这段代码最终会出现内存溢出的异常
* @param args
*/
public static void main(String[] args) {
ArrayList<OutOfMemoryDemo> list = new ArrayList<OutOfMemoryDemo>();
while (true) {
list.add(new OutOfMemoryDemo());
}
}
//出现下面的错误
/* Connected to the target VM, address: '127.0.0.1:53483', transport: 'socket'
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3210)
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:265)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:239)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:231)
at java.util.ArrayList.add(ArrayList.java:462)
at top.alertcode.demo.jvm.OutOfMemoryDemo.main(OutOfMemoryDemo.java:15)
Disconnected from the target VM, address: '127.0.0.1:53483', transport: 'socket'*/
}

??使用分析工具MAT(Eclipse Memory Analyzer),进行分析,很容易定位到内存溢出的原因,即频繁的创建对象。参照下图:
技术图片

原文:大专栏  jvm虚拟机(一):jvm内存溢出问题的分析与解决


jvm虚拟机(一):jvm内存溢出问题的分析与解决

标签:lips   ror   inter   eclipse   except   异常   模拟   clip   图片   

原文地址:https://www.cnblogs.com/wangziqiang123/p/11618285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!