存储在JVM中的Object的实例变量在哪里? [英] Where are instance variables of an Object stored in the JVM?

查看:487
本文介绍了存储在JVM中的Object的实例变量在哪里?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Java中对象的实例变量是存储在JVM的堆栈或方法区域中的吗?

Is an instance variable of an object in Java stored on the stack or method area of the JVM?

另外,我们对多个线程有不同的实例变量吗?

Also, do we have different instance variable for multiple threads?

如果它存储在方法区域中如何实例变量是否与静态变量存储不同?

If it is stored in method area how is instance variable different from static variable storage?

推荐答案

堆栈是操作系统分配给在
系统中运行的JVM的内存。堆栈是存储方法和局部变量的内存位置。
(变量引用原始对象引用也存储在堆栈中)。 是存储对象及其实例变量的内存位置。

Stack and heap are the memories allocated by the OS to the JVM that runs in the system.Stack is a memory place where the methods and the local variables are stored. (variable references either primitive or object references are also stored in the stack). Heap is a memory place where the objects and its instance variable are stored.

总结一下:


  • 类对象,包括方法代码和静态字段:heap。

  • 对象,包括实例字段:heap。

  • 局部变量和对方法的调用:stack


另外,我们有没有多个线程的不同实例变量?

Also, do we have different instance variable for multiple threads?

每个线程都有一个程序计数器(PC)和一个java堆栈。 PC将使用java堆栈来存储中间值,动态链接,方法的返回值和调度异常。这用于代替寄存器。

Every thread will have a program counter (PC) and a java stack. PC will use the java stack to store the intermediate values, dynamic linking, return values for methods and dispatch exceptions. This is used in the place of registers.

另外关于线程的更多信息,你真的应该阅读这个主题创建线程对象的位置在哪里?堆叠还是堆?

Also for more about thread, you really should read this topic Where is Thread Object created? Stack or Heap?.


如果它存储在方法区域中,实例变量与
静态变量存储的不同之处是什么?

If it is stored in method area how is instance variable different from static variable storage?

如上所示,静态字段存储在堆中。另一方面,局部变量存储在堆栈中。

As you can see above static fields are stored in heap. On the other hand, local variables are stored in stack.

//编辑

根据 Bruno Reis Peter Lawrey ,你还应该阅读关于逃脱分析

According to the comments of Bruno Reis and Peter Lawrey, you should also read about Escape analysis


  1. 维基百科

  2. 虚拟机性能增强,逃脱分析

  1. Wikipedia
  2. Virtual Machine Performance Enhancements,Escape Analysis

这篇关于存储在JVM中的Object的实例变量在哪里?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆