我的AP计算机科学老师告诉我不要使用静态方法,因为Java垃圾收集只会影响非静态方法,因此不再使用的静态方法会占用额外的内存。我几乎肯定GC不应该影响任何方法,只有对象,但我想在我说什么之前确定。那么GC与方法有什么关系吗?
答案 0 :(得分:8)
假设她真的说方法而不是字段,那么你的老师在这个场合是错的。如你所说,垃圾收集是从已经分配的对象中回收内存的过程,分配它们的方法的范围是无关紧要的。
作为旁注,静态字段是另一回事。在静态字段中保存对象(通常)会阻止垃圾收集器执行其操作,因为类将始终保留对它的引用,因此它不适合收集。
答案 1 :(得分:1)
使用静态方法,因为Java垃圾收集只影响非静态方法,因此不再使用的静态方法会占用额外的内存。
我想你错过了解他/她所说的话。只有在大多数Java SE程序中卸载ClassLoader时才会卸载方法,这种方法永远不会。
答案 2 :(得分:1)
我认为你的老师错了。问他/她是否认为在克隆对象时也会复制方法?如果他/她说是,那么他/她确实是错的。
方法是代码,代码是静态的,即当类存在时,它始终存在于一个实例中。