class A
{
public static String s="haha";
public a()
{
}
}------------------------------------------------
class Test
{
A a=null;
public static void main(String[] args)
{
for(int i=0;i<10;i++)
{
a=new A();
}
}}
我想问的是,这样在内存中会分别分配十个地址段来存放静态变量s吗? 还是只有一个? 当这十个A对象被GC回收时,是否在同时回收相关的变量s?
谢谢
{
public static String s="haha";
public a()
{
}
}------------------------------------------------
class Test
{
A a=null;
public static void main(String[] args)
{
for(int i=0;i<10;i++)
{
a=new A();
}
}}
我想问的是,这样在内存中会分别分配十个地址段来存放静态变量s吗? 还是只有一个? 当这十个A对象被GC回收时,是否在同时回收相关的变量s?
谢谢
static A a = new A("static A #0"); private String id; A(String s) {
id = s;
System.out.println(id + " is created.");
}
public void finalize() {
System.out.println(id + " is finalized.");
}
public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
new A("A #" + i);
System.gc();
}
a = null;
System.gc();
}
}当然这里说的是一般对象,如果是String对象,因为String字面量是存储在String pool中的,所以它什么时候回收又是另外一回事了。