如图,当点击下面的两个按钮时,REPALCE上面的Fragmnet,共两个,反复切换时发生了内存泄漏

这是Fragment的代码:

public class Fragment2 extends Fragment {

private List lb = new ArrayList<>();

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

allocBitMap();

allocBitMap();

return inflater.inflate(R.layout.f2, container, false);

}

private void allocBitMap() {

Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.men);

lb.add(b);

}

@Override

public void onDestroy() {

Log.e("onDestroy", "yes, onDestroy");

super.onDestroy();

}

}

这是Activity的部分代码

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.bt_left:

transFragleft();

break;

case R.id.bt_right:

transFragright();

break;

}

}

Fragment f1 = new Fragment1();

Fragment f2 = new Fragment2();

private void transFragleft(){

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.replace(R.id.rl_f, f1);

ft.commit();

}

private void transFragright(){

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();

ft.replace(R.id.rl_f, f2);

ft.commit();

}

这是反复切换时的内存状态:

这是LOGCAT,可以看到onDestroy执行了,整个Fragment生命周期马上就结束了

04-27 09:46:04.682 29320-29320/com.sg.fragmentpitfall E/onDestroy: yes, onDestroy

04-27 09:46:06.344 29320-29320/com.sg.fragmentpitfall E/onDestroy: yes, onDestroy

04-27 09:46:07.895 29320-29320/com.sg.fragmentpitfall E/onDestroy: yes, onDestroy

那么为什么他占用的那块内存还在呢?

提问2:

JAVA中怎样分配一定内存,用于实验,我这种bitmap的方法太LOW了,而且里面还有CONTEXT;

提问3:

是否应该避免使用FRAGMENT(我知道用HIDE/SHOW的方式要比REPLACE要好

谢谢!

android 释放bitmap fragment,,为什么重复Replace Fragment会内存泄漏相关推荐

  1. Android性能优化之利用强大的LeakCanary检测内存泄漏及解决办法

    本篇文章主要介绍了Android性能优化之利用LeakCanary检测内存泄漏及解决办法,有兴趣的同学可以了解一下. 目录 前言 什么是内存泄漏? 内存泄漏造成什么影响? 什么是LeakCanary? ...

  2. Android笔记 Application对象的使用-数据传递以及内存泄漏问题

    Application的使用 What is Application Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创 ...

  3. Android 内存泄漏检测开源库LeakCanary 研究

    1. Android 内存空间不足会引发的问题 1.1 异常 1.2 卡顿 1.3 从 Java 堆内存超限这个问题开始 2. 内存优化着手点 2.1 检测 RAM usage 2.2 进程 2.3 ...

  4. Android内存泄漏查找和解决

    Android内存泄漏查找和解决 目录: 内存泄漏的概念 一个内存泄漏的例子 Java中"失效"的private修饰符 回头看内存泄漏例子泄漏的重点 强引用与弱引用 解决内部类的内 ...

  5. Android内存优化之内存泄漏

    内存泄漏 内存泄漏一般有以下几种情况:单例.静态变量.Handler.匿名内部类.资源使用未关闭 单例导致的内存泄漏 单例的情况主要是因为单例的生命周期比较长,如果引用的一些资源(比如Context. ...

  6. Android应用内存泄漏的定位、分析与解决策略

    Hello,大家好,我是Clock.翻了一下简书,发现有一个多月没有更新博客,本来今天打算和妹纸去电影院看<你的名字>,然后再去到处浪的. 结果因为妹纸公司临时有事,她不得不回公司一趟.. ...

  7. Android内存泄漏的分析和避免

    内存泄漏 Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆而导致程序 ...

  8. Android内存泄漏

    Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的 ...

  9. Android 内存泄漏分析指北

    android 内存泄漏分析指北 简单来说内存泄漏就是当对象不再被应用程序使用,但是垃圾回收器却不能移除它们,因为它们正在被引用 java 垃圾回收介绍: Java 虚拟机运行所管理的内存包括以下几个 ...

最新文章

  1. redis 五大数据结构__常用命令
  2. jvm性能调优实战 -56没有WHERE条件的SQL语句引发的OOM MAT 排查步骤
  3. POJ 3255 Roadblocks 次短路
  4. angularjs的$http请求方式
  5. Zookeeper的客户端Curator基本使用
  6. FFmpeg总结(一)FFmpeg官方文档分块
  7. 阿里巴巴牵手上汽集团:成立汽车科技公司
  8. 用treeview遍历文件夹(vb)
  9. 学习RedHat7第一课
  10. Mac录制屏幕转GIF
  11. 当你不能够再拥有,你唯一可以做的,就是令自己不要忘记
  12. springboot配置文件密文解密
  13. linux parallel指令参数,GNU Parallel的具体使用
  14. linux Ubuntu使用Eclipse菜单栏不见了解决方法
  15. Java是什么?有什么特点?
  16. Spring Cloud Alibaba - Sentinel入门案例(四)(热点规则 )
  17. 自监督学习和计算机视觉
  18. 计算机动画专业教学大纲,3d-Max动画制作课程教学大纲
  19. Android蓝牙bt/ble开发
  20. Ijkplayer Android介绍

热门文章

  1. 如何使用 MySQL 的 IDE 导出导入数据表文件(以 Navicat for MySQL 导出导入 Excel 文件为例)
  2. java mapreduce教程_Java搭建MapReduce完成二次排序步骤
  3. tensorflow适用于python版本_tensorflow用python哪个版本更好?
  4. elemntui icon 大小_自定义elementui中的图标
  5. Segmentaion标签的三种表示:poly、mask、rle
  6. linux 进程函数替换,Linux使用exec函数实现进程替换的代码分享
  7. 浪潮集团PHP,浪潮php实习第一天(初识php)
  8. dokcer mysql修改编码_默认支持utf8编码的mysql docker镜像
  9. flash 用 html 播放,使用flash插件在HTML上播放音频
  10. JDK源码解析之 Java.lang.Float