只是一个非常简单的问题,在Java中,如果我将我的类的实例设置为全局变量,例如:
class User < ActiveRecord::Base
has_secure_password
validate :current_password_is_correct,
if: :validate_password?, on: :update
def current_password_is_correct
# For some stupid reason authenticate always returns false when called on self
if User.find(id).authenticate(current_password) == false
errors.add(:current_password, "is incorrect.")
end
end
def validate_password?
!password.blank?
end
attr_accessor :current_password
end
如果我稍后在代码中为其分配了一个新的类实例:
MyClass mc = new MyClass();
类的旧实例会发生什么,它会导致内存泄漏,这是不好的做法吗?
干杯。
答案 0 :(得分:5)
第一个MyClass被垃圾收集删除,mc被指定为一个新的MyClass,除非MyClass的第一个实例被另一个变量引用,在这种情况下垃圾收集不会销毁它。
答案 1 :(得分:2)
这是托管内存的重点。除非它持有一些其他外部资源(如网络连接),否则您不需要在完成对象时手动清除或删除对象。 JVM(或者,在这种情况下,Android运行时)跟踪对象,当他们不再使用它们时发出通知,并回收内存。