内存泄漏—出现情况,非静态内部类对外部类引用持有的泄漏复现

本文通过创建一个非静态内部类并对外部类形成引用,模拟内存泄漏场景,探讨了如何造成及避免这种情况。在特定条件下,如内部类执行任务时间长短,可能影响内存泄漏的发生。总结了制造此类内存泄漏的要点,并提供了测试代码的讲解。
摘要由CSDN通过智能技术生成

前言

  • 本文为制造一个"非静态内部类对外部类的引用持有"泄漏并对其结果进行观察作为学习使用,手段是制造泄漏,目的是了解泄漏产生的原因并未解决提供一种思路。
  • 本文基于的思想是:2个Activity,其中一个Activity的内部类被外部引用挂住,导致该Acitvity无法正常回收。
  • 本文只是对泄漏测试代码的一个讲解,并没有涉及到泄漏排查工具的使用,结合工具使用我会另开一片文章,https://blog.csdn.net/user11223344abc/article/details/80319915

Code

俩个Activity,一个SplashActivity,一个LeakActivity。操作路径是从Splash跳到LeakActivity。往返5次之后,手动Gc。

SplashActivity


	package zj.com;
	
	import android.content.Intent;
	import android.support.v7.app.AppCompatActivity;
	import android.os.Bundle;
	import android.view.View;
	
	import zj.com.rxjava_operators.R;
	
	public class SplashActivity extends AppCompatActivity {
   
	
	    private LeakActivity.TestResource testResource;
	    private LeakActivity.TestResource testResource2;
	
	    @Override
	    protected void onCreate(Bundle savedInstanceState) {
   
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值