一个关于类变量和类方法的问题,很多书上只是说如何去使用它,并没说出为什么可以这样用!大家进来说你们的看法吧! jvm的类加载器在加载一个类的时候会维持这一个类在内存中的副本,也就是说,虽然没有实例化该类的对象,静态成员方法和静态成员变量已经在内存中存在. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TO wingtrace: 不好意思,发帖后才看到你的第2个帖! 类应该是有同一属性和服务的对象的集合,而我们写的是这个集合的描述。觉得是JVM在遇到调用static类型的类成员时,如果该类未有实例,将会临时创建空间存放这类成员,而实例化是会为所有同类的对象创建公共空间存放这类成员。 你所说的类变量其实是一个引用,他在内存中已经有了一个4 byte的空间,里面的是空的,当你实例化一个类时,jvm会另外开一块内存装载类,这块内存的首地址就会放进刚才4byte的空间。class a{}class b{a ref;System.out.println(ref)} JAVA作为一种跨平台的语言,管理内存的方式和其他的语言有所不同。首先,JVM作为一个进程加载到进程池其次, JVM将.class文件信息读入内存,并寻找程序的入口点, 将主线程加载到JVM所在的进程再次, 主线程启动其他的子线程所有动态分配的变量和对象(变量可视为一种对象)都将被分配他们的线程所管理, 因此可推测: 动态变量的分配是在宿主线程启动以后如果是静态变量, 那么, 将在加载.class文件是被初始化, 所以它不属于任何实例是由于管理它的并不是管理实例变量的宿主线程 看看Thinking in Java吧,没有发现讲这么深层次的好书。 静态变量(你说得类变量)和实例变量的储存区间是不一样的不过jvm采取了lazy loading的策略enjoy~~ JAVA SWING 问题 崩溃了,连HELLO WORLD都编译不过去 求面试答案 一个超链接的正则表达式的问题 请教:如何在自己的java程序中引用自定义的包(只有*.class,无*.java) 为什么在Null的Layout的JPanel中添加组件显示失败呢? 200分大奉送!有关SQL语句的问题?急!在先等待!谁的好再送上100!请给原代码! 怎么引用打包为jar文件里的类文件? 奇怪写法!哪位大侠能解释一下,谢了! 关于组合框的一个问题? 急!!!怎样用JavaPrintService打印PDF文件?分不够可以再加! 环境变量的问题!
觉得是JVM在遇到调用static类型的类成员时,如果该类未有实例,将会临时创建空间存放这类成员,而实例化是会为所有同类的对象创建公共空间存放这类成员。
当你实例化一个类时,jvm会另外开一块内存装载类,这块内存的首地址就会放进刚才4byte的
空间。class a{}
class b{
a ref;
System.out.println(ref)
}
首先,JVM作为一个进程加载到进程池
其次, JVM将.class文件信息读入内存,并寻找程序的入口点, 将主线程加载到JVM所在的进程
再次, 主线程启动其他的子线程所有动态分配的变量和对象(变量可视为一种对象)都将被分配他们的线程所管理, 因此可推测: 动态变量的分配是在宿主线程启动以后
如果是静态变量, 那么, 将在加载.class文件是被初始化, 所以它不属于任何实例是由于管理它的并不是管理实例变量的宿主线程
不过jvm采取了lazy loading的策略enjoy~~