深入理解java虚拟机讲的什么(01JAVA虚拟机深入理解与实战)
深入理解java虚拟机讲的什么(01JAVA虚拟机深入理解与实战)-XX:PermSize=64M JVM初始分配的非堆内存还有其它的参数:其中:-Xms为JVM初始分配的堆内存大小-Xmx为JVM最大允许分配椎内存大小
JAVA虚拟机深入理解与实战内存溢出场景
测试代码
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Person> personList=new ArrayList<Person>();
while(true) {
personList.add(new Person());
System.out.println(personList.size());
}
}
}
经过测试,win10 4G的内存【31151587 次出现内存溢出】
31151587
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:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)
at com.cc.Main.main(Main.java:12)
如果觉得时间太少,可以调整运行的大小:-Xms50M -Xmx50M
其中:
-Xms为JVM初始分配的堆内存大小
-Xmx为JVM最大允许分配椎内存大小
还有其它的参数:
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
增加运行参数,设置快照文件
设置参数:-XX: HeapDumpOnOutOfMemoryError 把内存溢出时 生成一个快照【注意大小写】
刷新项目,会在项目下生成一个:xxx.hprof的文件
分析hpro的文件
eclipse下的 memory analyzer工具
下载地址:https://www.eclipse.org/mat/downloads.php
java监控工具
jconsole 配置好java的环境变量之后,可以在cmd直接输入jconsole