[讨论] VM SPEC求解疑——class variable 与 instance variable区别?
beneo
2010-08-08
http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.html
A class variable is a field of a class type declared using the keyword static (§2.9.1) within a class declaration, or with or without the keyword static in an interface declaration. Class variables are created when the class or interface is loaded (§2.17.2) and are initialized on creation to default values (§2.5.1). The class variable effectively ceases to exist when its class or interface is unloaded (§2.17.8). 最开始我臆想,class variable就是存在perm区那个唯一的class,后来发现他说有关键字static或者interface,那这样我就有点糊涂了,难道 c Class Demo { static A a = new A(); } a才是class variable?我怎么看的象instance variable了 The class variable effectively ceases to exist when its class or interface is unloaded 明显再说Classloader了。。这个没啥问题。 |
|
mercyblitz
2010-08-08
new A(); 是在Java Heap中。
而a变量,不管是类的(static)或实例的(非static),这个标识(变量信息)属于类的信息,保存在永久区域(Perm),只是static初始化在类加载时,而实例的则是对象构造时,生命周期不同而已。 |
|
beneo
2010-08-08
mercyblitz 写道 new A(); 是在Java Heap中。
而a变量,不管是类的(static)或实例的(非static),这个标识(变量信息)属于类的信息,保存在永久区域(Perm),只是static初始化在类加载时,而实例的则是对象构造时,生命周期不同而已。 你没说清楚或者我没看懂。。。 |
|
mercyblitz
2010-08-08
beneo 写道 mercyblitz 写道 new A(); 是在Java Heap中。
而a变量,不管是类的(static)或实例的(非static),这个标识(变量信息)属于类的信息,保存在永久区域(Perm),只是static初始化在类加载时,而实例的则是对象构造时,生命周期不同而已。 你没说清楚或者我没看懂。。。 a变量属于Class的元信息,不论它有没有static修饰。 |
|
beneo
2010-08-08
可能我把Class object 和 Class variable 搞混了
|
|
mercyblitz
2010-08-08
beneo 写道 可能我把Class object 和 Class variable 搞混了
Class object也是对象,不过不在Heap中,而是在Perm 区域。当Class重新定义的时候,前一个版本会被GC掉。 |
|
taolei0628
2010-11-26
变量只是对对象实例的一个引用,而非对象本身。
|
相关讨论
相关资源推荐
- 虚拟机安装包vm7.0——sn
- idea中vm options/program arguments/environment variable三者的区别和说明
- vue学习——vue实例(instance)
- 安装solidity遇见的问题——unused variable 'returned'
- VM——与基恩士KV系列PLC通讯
- 【vSphere | VM】虚拟机自定义规范Ⅳ —— 使用虚拟机自定义规范创建 Linux 和 Windows VM
- NDK学习笔记:线程JNIEnv,JavaVM,JNI_OnLoad(GetEnv返回NULL?FindClass返回NULL?)
- 【Vue】Class与Style的绑定 —— 绑定对象与数组
- 关于 CMake编译出出现错误“Could not find compiler set in environment variable RC:” 的解决方法
- 虚拟机已死,容器才是未来?——VM + Container