释放掉占据的内存空间是由GC完成的。
面试题
1、输出什么?
String s1=
"abc"
+
"def"
;
//1
String s2=
new
String(s1);
//2
if
(s1.equals(s2))
//3
System.out.println(
".equals succeeded"
);
//4
if
(s1==s2)
//5
System.out.println(
"==succeeded"
);
//6
答:
(1)s1在常量池,new的东西都在堆;
(2)equals()比较的是内容,==比较的是地址。
输出:.equals succeeded
2、线程共享还是不共享?
JAVA运行时,内存分为堆、方法区、虚拟机栈、本地方法栈和程序计数器。
其中,堆和方法区为线程共享,其他为线程隔离。