流:是。 Java没有析构函数,所以对象无法处理自己的清理工作。一些清理工作是在垃圾收集时完成的(终结器),但依赖于这种编程实践并不是很好的做法。
Java中存在“finally”块的原因之一是负责资源的重新分配。
内存分配:看起来不像。我创建了以下程序:
public class deleteme
{
public static void main(String[] args)
{
int a;
String s;
}
}
编译它,然后使用javap的-c反编译,并得到了:
public class deleteme {
public deleteme();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: return
}
看起来没有什么发生,除了初始化我的主类。
然后,我改变了代码的说:
int a = 1;
String s = "";
汇编,反编译,并得到:
public class deleteme {
public deleteme();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_1
1: istore_1
2: ldc #2 // String
4: astore_2
5: return
}
你可以清楚地看到,在“主”的方法,该内存的相关补充规定分配。
我有一种感觉,Java编译器可能会以不同的方式处理这个问题。
请将它们分成多个问题:)。你也可以搜索并找到他们在别处回答。 –
流问题已回答,有人可以回答记忆吗? 它可能在线,但它通常以一些愚蠢和复杂的方式编写。我宁愿有人exlplaining – user1021085