java虚拟机什么情况下会对java类进行加载???

一个java类会在什么情况下被虚拟机加载以及别加载后内存的分配情况,还有就是这个类的生命周期。比如说当一个类被实例化时会被加载.高手给讲讲呗!还有那个静态代码块是怎么回事... 一个java类会在什么情况下被虚拟机加载以及别加载后内存的分配情况,还有就是这个类的生命周期。比如说当一个类被实例化时会被加载.
高手给讲讲呗!
还有那个静态代码块是怎么回事??
展开
 我来答
Oo笑看人生oO
2009-11-30 · TA获得超过501个赞
知道小有建树答主
回答量:393
采纳率:0%
帮助的人:384万
展开全部
王森的《Java深度历险》详细说了这个问题。大致是jvm先加载Object类,再加载该类的超类,再加载该类本身,当该类被指向null时,该类被垃圾回收机制处理,当垃圾回收机制执行时会被清楚。
静态代码块会在类被创建或被调用的时候就被初始化,被创建和被调用是不同的两个概念,比如User u = new User();这个时候u没有被调用,不过静态模块已经被加载执行,而User.class;这条语句User并没有创建出实例,不过却被调用了,这个时候静态的代码块也被加载。不过,静态代码块有一个很特别的地方就是,在同一个应用程序中,只会执行一次。下面是一个Demo,可以看看:
public class User{
static {
System.out.println("It's a static space");
}

public static String name = "Jim Green";
}
另一个类调用,直接写main方法了。
public static void main(String[] args){
User u = new User();
String name = User.name;
}
这里会输出一句It's a static space,而注释掉其中任何一句依然会输出。不过,如果这个main方法卸载User里时,main方法什么都不写都会输出It's a static space,楼主可以想想是为什么。
akfucc
2009-11-19 · TA获得超过5454个赞
知道大有可为答主
回答量:1771
采纳率:0%
帮助的人:2174万
展开全部
推荐 深入JAVA虚拟机 电子书, 要有点耐心
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freish
2009-11-19 · TA获得超过2878个赞
知道大有可为答主
回答量:3153
采纳率:0%
帮助的人:2665万
展开全部
用的时候才会把字节码加载到内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式