我已经读过,非静态内部类可以比静态内部类产生更多的内存泄漏。很好,非静态类将生成自身的对象实例以及它的out类作为对它的引用。
因此,静态内部类可以避免多个对象实例,因为它将创建单个类级别对象而不是实例级别。但是如何避免创建外部类实例的对象呢?
Plz帮助理解静态内部类与非静态/匿名内部类内存泄漏。
答案 0 :(得分:0)
静态/非静态内部类有点复杂,在另一个问题中有详细解释(注释链接),我将在此处尝试回答您的问题
但是如何避免创建其外部类实例的对象? 它不能避免,您仍然可以创建外部类的对象
其区别在于,由于静态类不保留对外部类的引用,因此内部类对象无法使外部类的对象保持活动状态。
虽然是非静态对象,但将引用外部类,直到您有效引用内部类对象(例如O1)之前,外部类对象(由O1引用)也不会被引用。收集的垃圾(即使您可能没有外部类对象的任何实时引用)。