深入理解java虚拟机---java内存区域与内存溢出异常---2堆栈溢出

 

本文来源于翁舒航的博客,点击即可跳转原文观看!!!(被转载或者拷贝走的内容可能缺失图片、视频等原文的内容)

若网站将链接屏蔽,可直接拷贝原文链接到地址栏跳转观看,原文链接:https://www.cnblogs.com/wengshuhang/p/10073638.html

 

对象在内存中的布局分为三块:对象头、实例数据、对齐补充

  主要说下对象头,其他两个看字面意思就知道了:存储32bit或64bit(看系统),哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程id等。

 

测试堆内存溢出:

启动参数:-Xms 最小堆空间 -Xmx最大堆空间 +HeapDumpOnOutOfMemoryError 内存堆转储快照 HeapDumpPath : dump文件生成路径

  

 

代码

  

可以用jvisualvm来打开dump文件进行分析,

 

内存泄漏则查询GC root的引用链, 不存在则是空间过小(上诉代码以及启动配置)

  然后是栈内存:

      启动参数:

   -Xss128k   Xss线程栈的内存容量

      代码:

一个解决日常多线程的内存溢出的方法:减少最大堆跟栈容量来获取更多的线程数量(以单位空间更小获取更多的数量)

其他参数: -XX:PermSize -XX:MaxPermSize  限制方法区的大小,间接限制到常量池(String的驻留池也在这)

                -XX: MaxDirectMemorySize 本机直接内存大小指定(默认与堆的最大值一样)

 

转载于:https://www.cnblogs.com/wengshuhang/p/10073638.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值