我的AP计算机科学老师告诉我不要使用静态方法,因为Java垃圾回收只影响非静态方法,因此不再使用的静态方法会占用额外的内存。我几乎肯定 GC 永远不会影响任何方法,只影响对象,但在我说任何话之前我想确定一下。那么GC和方法有关系吗?
问问题
121 次
3 回答
8
假设她真的说的是方法而不是领域,那么你的老师在这种情况下是错误的。正如您所说,垃圾收集是从已分配的对象中回收内存的过程,分配它们的方法的范围无关紧要。
作为旁注,静态字段是另一回事。将对象保存在静态字段中(通常)确实会阻止垃圾收集器做它的事情,因为该类将始终持有对它的引用,因此它没有资格被收集。
于 2012-09-16T19:15:10.897 回答
1
使用静态方法,因为Java垃圾回收只影响非静态方法,因此不再使用的静态方法会占用额外的内存。
我想你想念他/她说的话。一个方法只有在它的 ClassLoader 被卸载时才会被卸载,在大多数 Java SE 程序中,永远不会。
于 2012-09-16T19:13:54.347 回答
1
我觉得你的老师错了。问他/她是否认为克隆对象时方法也会被复制?如果他/她说是,那么他/她就真的错了。
方法是代码,代码是静态的,即当类存在时,它始终存在于一个实例中。
于 2012-09-16T19:20:48.817 回答