Java内存原型学习-笔记(嘿嘿……)

一:Java虚拟机内存原型:

寄存器:……

堆:存放对象

栈:存放引用,基本类型的数据,基本单位是栈帧

静态域:存放由static修饰的变量

常量池:存放常量。

二:常量池

常量池是指在编译时期被确定,并且保存在class文件中的数据。除了基本类型和string的常量值(final)的数据外,还包括一些以文本形式出现的符号引用:

1.类的接口和全限定名

2.字段的名称和描述符

3.方法的名称和描述符

虚拟机必须为每个已经转载的类型维护一个常量池,在Java虚拟中常量池是一表的形式存在的,对于string类型,有一张固定长度CONSTANT_String_info表用来存储字符串

三:Java内存分配的栈

每个Java线程运行的时候,Java虚拟机都要为这个线程分配一个栈。栈的基本单位是栈帧,每当线程执行到一个方法,就向栈中压入一个栈帧,这个栈帧中存放执行方法的局部变量、参数、操作数、中间执行结果。当方法执行完,栈帧弹出。Java栈中的数据在各个线程之间是私有的,即其他线程不能访问本线程的栈。上面说到引用本身是存储在栈中的。
栈的特性之一:数据共享

如果栈中已经存在了一个值,那个当另一个变量也等于这个值时,这个对象就会只想这个既有的值。但是当他变化时,这个值不会改变,对象会重新指向另一个值,或者新加入一个值。

四:Java内存分配的堆

堆用来存储new出来的对象,和数组。当一个对象没有一个引用指向它时,这个对象就变为了垃圾,在随后的某个时刻会被Java虚拟机的垃圾回收器收回。栈中的引用其实是执行堆中开辟内存地址的首地址。这也是为什么称为“引用”。动态分配内存,不用直到生存期。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值