JVM堆(Heap)

堆是Java内存管理的核心区域,所有线程共享。它在JVM启动时创建,分为新生区、养老区,Java7以前还包括永久代,Java8后变为元空间。对象通过new创建并在堆中分配。堆内存溢出可能导致`java.lang.OutOfMemoryError:Javaheapspace`错误。诊断工具有jps、jmap和jconsole,用于监控Java进程和堆内存占用情况。
摘要由CSDN通过智能技术生成

Heap 堆

1、定义

一个JVM实例只有一个堆内存,堆也是Java内存管理的核心区域,堆在JVM启动的时候创建,其空间大小也被创建,是JVM中最大的一块内存空间,所有线程共享Java堆
像程序计数器、本地方法栈、虚拟机栈都是线程私有的,而堆(Heap)、方法区都是线程共享的区域。通过new关键字创建的对象都会使用堆内存。

1.1堆空间细分

在这里插入图片描述

Java7及以前将堆空间逻辑上分成三部分:新生区+养老区+永久代
Java8及以后将堆内存逻辑上分为:新生区+养老区+元空间
新生代分为了eden(伊甸园)、survivor1(幸存区)、survivor2,对象创建先放在eden中,经过一定时间还幸存就会放在幸存者区再大一点就去老年代

2、特点

1.他是线程共享的,堆中对象都需要考虑到线程安全问题
2.有垃圾回收机制

3、堆内存溢出

  java.lang.OutOfMemoryError: Java heap space

在这里插入图片描述

这里的List集合因为它一直在作用范围内被用着所以是不会被垃圾回收的,而越来越变长的字符串对象也一直被追加到list中,所以随着字符串对象越来越多,堆空间就会被占满了。

堆内存诊断

1.jps工具

查看当前系统中有哪些java进程

2.jmap工具

查看堆内存的占用情况 jmap -heap 进程id

3.jconsole工具

图形化界面的多功能的监测工具,可以连续监测

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值