java 虚拟机内存分配

内存结构:

Java程序在运行时,需要在内存中分配空间,为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式

共分配了5块区域,每区域中处理方式不同

栈内存、堆内存、 方法区、本地方法区、寄存器

栈内存:
  • 用于存储局部变量
  • 当数据使用完,所占空间会自动释放

例如:

int a = 5;
int b = a;
b = 8;

这里写图片描述

堆内存

用于存放数组和对象,通过new建立的实例都存放在堆内存中
情景:分析数组如何存放在内存中

int [] a = new int[3]

这里写图片描述

例如:

int[] a = new int[3]
int[] b = a;
b[1] = 89;
a[1] = 98;
a = null;
问:此时有没有垃圾数据,答:没有,a的引用没有指向了,但是b的还在使用,所以没有垃圾数据

这里写图片描述

例如:

int[] a = new int[3]
int[] b = new int[3]

只要是new了就会开辟新的内存

这里写图片描述

总结
  • 数组和对象,通过new建立的实例都存放在堆内存中
  • 每个实体都有内存地制值
  • 实体中的变量都有默认初始化值
  • 当实体=null时,实体不在被使用,会在不确定的时间内被垃圾回收器回收
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值