日期:2014-05-20  浏览次数:20622 次

java中类加载到内存问题
class demo
{
static int i=0;

static String p="a";
static
{
i++;
System.out.println("p="+p+"   i="+i);
}
{
p="b";
System.out.println("p="+p);
}
private demo() 

{
p="c";
System.out.println("p="+p);
}
private static demo s=new demo();
public static demo getInstance()
{
return s;
}
public static void setparm(String a)
{
p=a;
}
}
class shijiu
{
public static void main(String[]args)
{
demo s=demo.getInstance();
demo ss=demo.getInstance();
}
}
我是想知道 demo ss=demo.getInstance 中的demo. 是不是再重新加载demo类
------解决方案--------------------
不需要,这个和jvm的机制有关,你可以看看jvm加载类的机制,我知道这个类用到的时候加载这个类,程序中没有用到这个类的对象,静态变量,方法,才可能被释放。

------解决方案--------------------
NO。首先demo自身有一个demo对象的引用,而且是static的,所以s只有在demo这个class在加载的时候初始化。而getInstance是返回的这个引用,所以你通过getInstance获取出来的demo对象都是同一个