您的位置 首页 java

01JAVA虚拟机深入理解与实战

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. OutOfMemory Error: Java heap space
 at java.util.Arrays. copy Of(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

01JAVA虚拟机深入理解与实战

其中:

-Xms为 JVM 初始分配的堆内存大小

-Xmx为JVM最大允许分配椎内存大小

还有其它的参数:

-XX:PermSize=64M JVM初始分配的非堆内存

-XX:MaxPermSize=128M JVM最大允许分配的非堆内存, 按需分配


增加运行参数,设置快照文件

设置参数:-XX:+HeapDumpOnOutOfMemoryError 把内存溢出时,生成一个快照【注意大小写】

刷新项目,会在项目下生成一个:xxx.hprof的文件


分析hpro的文件

eclipse 下的 memory analyzer工具

下载地址:

01JAVA虚拟机深入理解与实战


java监控工具

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

文章来源:智云一二三科技

文章标题:01JAVA虚拟机深入理解与实战

文章地址:https://www.zhihuclub.com/187336.shtml

关于作者: 智云科技

热门文章

网站地图