JVM的内存结构

目录

1. 栈

2. 堆

3. 方法区

4. 例子


JVM作为Java的一个核心,那么它的内存结构是怎么样的呢?

废话不多说,开整~

在运行时,系统会分配自身内存给jvm,jvm再把这份内存分割成五块,分给它的五个小弟(活都给小弟了,自己不要干活,爽歪歪~),这五个小弟分别是:

  1. 方法区
  2. 本地方法栈
  3. 程序计数器

本地方法栈这个4号小弟主要是跟C++的native方法有关,

程序计数器这个5号小弟主要是指向当前程序运行的位置,

这两个小弟我们没怎么听说过,所以暂时跳过。

1. 栈

JVM的一号小弟叫栈,也就是小弟们中的老大。

职能记录方法的执行顺序临时变量。

2. 堆

然后又到了二号小弟,堆,同样也是一种数据结构。

职能:存储对象

3. 方法区

方法区的实现方式

jdk8之前是永久代,jdk8及以后是元空间

主要存储一些静态变量,ClassLoader

4. 例子

  1. main方法先入栈

在方法区,开辟age的空间,值为22;

栈中的对象引用p指向堆中的新建的Person对象;

fun1() ;( 先执行fun() )

输出语句;

fun1()修改完毕 -> 删除fun1() 占用的空间

  1. fun1() 入栈

修改形参p.age

修改形参p.name

fun1()修改完毕 -> 删除fun1() 占用的空间

回到main方法

最后也会通过算法判断是否要用GC去回收堆中Person的空间

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值