对象的实例变量存储在 JVM 中的什么位置?
2022-09-02 12:17:15
Java 中对象的实例变量是否存储在 JVM 的堆栈或方法区域中?
另外,对于多个线程,我们是否有不同的实例变量?
如果它存储在方法区域中,实例变量与静态变量存储有何不同?
Java 中对象的实例变量是否存储在 JVM 的堆栈或方法区域中?
另外,对于多个线程,我们是否有不同的实例变量?
如果它存储在方法区域中,实例变量与静态变量存储有何不同?
堆栈和堆是操作系统分配给在系统中运行的 JVM 的内存。堆栈是存储方法和局部变量的内存位置。(变量引用基元或对象引用也存储在堆栈中)。堆是存储对象及其实例变量的内存位置。
所以总结一下:
另外,对于多个线程,我们是否有不同的实例变量?
每个线程都有一个程序计数器(PC)和一个java堆栈。PC将使用java堆栈来存储中间值,动态链接,方法的返回值和调度异常。这用于代替寄存器。
另外,有关线程的更多信息,您确实应该阅读本主题 线程对象在哪里创建?堆栈还是堆?。
如果它存储在方法区域中,实例变量与静态变量存储有何不同?
如上所示,静态字段存储在堆中。另一方面,局部变量存储在堆栈中。
编辑
根据Bruno Reis和Peter Lawrey的评论,您还应该阅读有关Escape分析的信息。
确切地说,
参考:Head First Java