Java学习笔记三:内存

为什么有栈内存和堆内存之分?
答:当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会追个放入这块栈内存里,随着方法的执行结束,这个方法的内存占也就自然销毁。因此,所有在方法中定义的变量都是放在栈内存中的;
当我们在程序中创建一个对象时,这个对象将会被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会岁方法的结束而销毁,既是方法结束后,这个对象还可能被另外一个引用变量所引用(方法的传递时很常见),则这个对象依然不会被销毁。只有当一个对象没有任何引用变量引用它时,系统的垃圾回收机制才会在合适的时候回收它。

当我们看引用类型数据时,一样要把引用类型变量看成两个部分:
1、在栈内存中的引用变量,也就是在代码中定义的引用类型变量;
2、实际(引用类型变量数据存储本身)数组本身,这个部分是运行在系统内存里面,通常无法直接访问它,只有通过数组引用变量来访问它。

Java中常用的内存区域:
在java中主要存在4块空间,这些内存空间的名称及作用如下:
栈内存空间:保存所有的对象名称(引用的堆内存空间的地址)
特点:用完即释放;
堆内存空间:保存每个对象的具体属性内容
全局数据区:保存static;类型的属性
全局代码区:保存所有的方法定义

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值