Dan*_*ter 4 java memory-management
Java 如何将变量名与内存中的位置关联起来?
我对此的第一个想法是必须有一个用于所有变量名称的静态表,该静态表将其与其值或其值的位置相关联。它是否存在并且该表有正式名称吗?
基本类型变量的值是某个数字,而引用类型变量的值是引用(通常是内存地址)。
现在的问题是:给定变量的存储值在哪里。这取决于变量的种类——有局部变量、实例变量(字段)和类变量(静态字段)。
本地名称在编译期间解析。每个变量只是方法中的第 i 个变量,并且将作为第 i 个变量存储在某个方法调用的堆栈帧中。
例如变量会有所不同。字段名称始终出现在字节码中(但通常不会出现在 JIT 编译器生成的机器代码中)。给定类的所有对象都具有相同的布局,因此类可以存储给定字段的偏移量- 距对象开头的距离。解释器可以读取对象的地址并添加偏移量来计算变量存储的位置。
类变量与实例变量类似,但更简单。在这种情况下,类存储其变量的名称和值。