1 import android.os.Bundle; 2 import android.support.v7.app.AppCompatActivity; 3 4 import java.lang.ref.WeakReference; 5 import java.util.ArrayList; 6 7 public class InnerClassLeaksActivity extends AppCompatActivity { 8 9 private ArrayList<String> list = new ArrayList<String>(); 10 11 @Override 12 protected void onCreate(Bundle savedInstanceState) { 13 super.onCreate(savedInstanceState); 14 setContentView(R.layout.activity_inner_class_leaks); 15 //模拟Activity一些其他的对象 16 for (int i = 0; i < 10000; i++) { 17 list.add("Memory Leak!"); 18 } 19 //开启线程 20 new InnerClassHasLeak().start(); 21 } 22 23 public class InnerClassHasLeak extends Thread{ 24 25 @Override 26 public void run() { 27 super.run(); 28 //模拟耗时操作 29 try { 30 Thread.sleep(10 * 60 * 1000); 31 } catch (InterruptedException e) { 32 e.printStackTrace(); 33 } 34 } 35 } 36 public static class StaticInnerClassNoLeak extends Thread{ 37 private WeakReference<InnerClassLeaksActivity> mLeakActivityRef; 38 39 public StaticInnerClassNoLeak(InnerClassLeaksActivity activity){ 40 mLeakActivityRef = new WeakReference<InnerClassLeaksActivity>(activity); 41 } 42 @Override 43 public void run() { 44 super.run(); 45 //模拟耗时操作 46 try { 47 Thread.sleep(10 * 60 * 1000); 48 } catch (InterruptedException e) { 49 e.printStackTrace(); 50 } 51 //如果需要使用LeakActivity,我们需要添加一个判断 52 InnerClassLeaksActivity activity = mLeakActivityRef.get(); 53 if(activity != null){ 54 //do something 55 } 56 } 57 } 58 }到此这篇hprof文件生成原因(.hprof文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/79248.html