吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4322|回复: 9
收起左侧

[Java 转载] Java堆内存溢出

[复制链接]
youling 发表于 2016-9-18 21:17
最近在研究Java虚拟机,下面演示个Java堆内存溢出的实例,Java堆内存用于存储对象实例,只有不断的创建对象并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量达到堆得最大容量后就会产生堆内存溢出异常,示例代码如下:

import java.util.List;
import java.util.ArrayList;
/**
* java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=F:\IT\java HeapOOM
* 运行以上命令 产生hprof文件,可以分析溢出原因
*/
public class HeapOOM{
        static class OOMObject{}
       
        public static void main(String[] args){
                List<OOMObject> list = new ArrayList<OOMObject>();
               
                while(true){
                        list.add(new OOMObject());
                }
        }
}


用命令编译,然后执行以下命令
java -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=F:\IT\java HeapOOM

然后在F:\IT\java这个路径下有个hprof格式的文件。

然后用jhat命令来分析hprof文件,执行以下命令:
jhat -J-Xmx1024m  java_pid6280.hprof


会启动一个服务,如图1所示。
接着使用浏览器访问 http://localhost:7000/ 即可看到相关信息.
1.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shenshaokuai 发表于 2016-9-18 21:28
你想说什么?
别人都叫我老木 发表于 2016-9-18 21:31
呵呵0214 发表于 2016-9-19 02:34
非常好,以后实战可以用用,但是这个是基本理论,实际内存溢出的情况要比这个复杂到死
LeiSir 发表于 2016-9-19 06:12
看了又看,不是很懂,
小木hwy 发表于 2016-9-19 07:21
不错 啊,支持了
头像被屏蔽
-Zing- 发表于 2016-9-19 11:58
提示: 作者被禁止或删除 内容自动屏蔽
908443382 发表于 2016-9-21 20:07 来自手机
看了又看,就是看不懂
第二梦 发表于 2016-9-28 22:14
前阶段面试就遇到这个问题 领教了
MAXtoDEATH 发表于 2016-10-9 20:04
只玩过缓冲区溢出的我、、、、
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-7 14:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表