专业的JAVA编程教程与资源

网站首页 > java教程 正文

01JAVA虚拟机深入理解与实战(理解人为差错实战指南书籍简介)

temp10 2024-09-16 05:23:50 java教程 14 ℃ 0 评论

JAVA虚拟机深入理解与实战

内存溢出场景

测试代码

01JAVA虚拟机深入理解与实战(理解人为差错实战指南书籍简介)

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表