快捷搜索:  汽车  科技

深入理解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

深入理解java虚拟机讲的什么(01JAVA虚拟机深入理解与实战)(1)

其中:

-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虚拟机讲的什么(01JAVA虚拟机深入理解与实战)(2)


java监控工具

jconsole 配置好java的环境变量之后,可以在cmd直接输入jconsole

深入理解java虚拟机讲的什么(01JAVA虚拟机深入理解与实战)(3)

猜您喜欢: