【java】JVM-Object类

Object类有哪些方法

registerNatives()

//私有方法

getClass()

//返回此 Object 的运行类。

hashCode()

//用于获取对象的哈希值。

equals(Object obj)

//用于确认两个对象是否“相同”。

clone()

//创建并返回此对象的一个副本。

toString()

//返回该对象的字符串表示。

notify()

//唤醒在此对象监视器上等待的单个线程。
notifyAll()

//唤醒在此对象监视器上等待的所有线程。

wait(long timeout)

//在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或 者超过指定的时间量前,导致当前线程等待。

wait(long timeout, int nanos)

//在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

wait()

//用于让当前线程失去操作权限,当前线程进入等待序列

finalize()

//当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

请解释一下对象的创建过程?(半初始化)


加问DCL要不要加volatile问题?(指令重排)

为了禁止指令重排序,所以要引入 volatile。

对象在内存中的存储布局?(对象与数组的存储不同)

例如一个class对象中有三个变量,分别是int(4bytes),long(8bytes),boolean(1bytes)

按照存储布局,对象大小为8(Markword)+4(class pointer)+4(int)+8(long)+1(boolean)=25,但经过对齐后,要加7bytes让其被8整除,所以实际大小为32bytes。

对象头具体包括什么? (markword klasspointer)Synchronized锁信息


对象怎么定位?(直接 间接)

对象怎么分配?(栈上—线程本地—Eden—old)

0bject o= new 0bject()在内存冲占用多少字节?

根据上面的存储布局理论,8(Markword)+4(class pointer)+4(padding)=16bytes

问题:为什么hotspot不使用C++对象来代表java对象?

class对象是在堆还是在方法里面

Class 对象是在堆内存中创建的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

岩塘

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

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

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

打赏作者

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

抵扣说明:

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

余额充值