1. 监听在window/body等事件没有解绑2. 绑在EventBus的事件没有解绑3. 模块形成的闭包内部变量使用完后没有置成null4. 使用第三方库创建,没有调用正确的销毁函数5 . echarts问题: 不要把chart实例赋值在this上.(this对象一直存在不会被回收)析构掉生成的echarts对象.//-dom 不存在时不画if (!this.$refs.barchart) {return}//- 不要重复初始化let Chart = echarts.getInstanceB…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com LeakCanary 内存泄漏 监测 性能优化 简介 原理 MD GitHub:https://github.com/square/leakcanary Demo地址:https://github.com/baiqiantao/LeakCanaryTest.git 目录 目录介绍简单使用更…
原始问题是这样 然后扔到了很多Android开发交流群里. 接着产生了很多的见解,我感觉比较靠谱的有以下: 网友对我问题的回答 1.onDestroy被回调代不代表Activity被回收了? 官方是这么说的 Perform any final cleanup [before] an activity is destroyed. x   1 Perform any final cleanup [before] an activity is destroyed. 众多网友:不代表! 网友1:代表[将…
背景 上周发现蘑菇街IM-Android代码里面.一些地方代码编写不当.存在内存泄漏的问题.在和疯紫交流的过程中.发现加深了一些理解,所以决定写一下分析思路,相互学习. 内存泄漏 一个不会被使用的对象.由于另一个正在使用的对象持有该对象的引用.导致它不能正常被回收,而停留在堆内存中. 内存泄漏的危害 最坏的情况,App可能会由于大量的内存泄漏而导致内存耗尽.引发Crash,假设内存未耗尽,App也会犹豫内存空间不足,出现频繁的GC(垃圾回收),每次一出GC都是很耗时的堵塞性操作,会造成设备很严重…
例如: @interface Test:NSObject{ id __strong obj_; } -(void) setObject:(id __strong)obj; @end @implementation Test -(id)init{ self=[super init]; if(self){} return; } -(void) setObject:(id __strong) obj{ obj_=obj; } @end 那么在调用时如下: { 1.  id text1=[[Test a…
MSDN官方XmlSerializer类使用说明链接: http://msdn.microsoft.com/zh-CN/library/system.xml.serialization.xmlserializer(v=VS.100).aspx 动态生成的程序集 为了提高性能,XML 序列化基础结构动态生成程序集,以便对指定类型进行序列化和反序列化. 该基础结构将找到并重新使用这些程序集. 仅当使用以下构造函数时,才会发生此行为: XmlSerializer.XmlSerializer(Type)…
首先定义一个Person类和一个Dog类,然后分别实例化对象p和d,给p对象添加一个pet属性 给d对象添加一个master属性此时Person和Dog的应用计数都为2,当del p 和del d后Person 和Dog的应用计数都为1,就造成了循环引用导致内存不能释放 最终导致内存泄漏. 以下图片是没有循环应用的代码执行结果 以下图片是循环引用后代码执行结果…
概念 内存泄露:指程序中动态分配内存给一些临时对象,但对象不会被GC回收,它始终占用内存,被分配的对象可达但已无用.即无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间浪费. 可达性分析算法 JVM使用可达性分析算法判断对象是否存活. GC Root 通过一系列名为"GC Roots"的对象作为起点,从这些结点开始向下搜索,搜索所走过的路径称为"引用链(Reference Chain)",当一个对象到GC Roots没有任何饮用链相连时,则证明此…
package com.nchu.learn.base.reflect; import org.junit.Test; import java.util.Collection; import java.util.HashSet; /** * @Decription 反射学习 * @Author yangsj * @Date 20190711 11:10 **/ public class ReflectDemo { /** * 重写hashcode方法后,修改成员字段数值会影响hashcode值,…
资料参考:https://blog.csdn.net/u011479990/article/details/78480091 内存泄漏的原因在于生命周期长的对象持有了生命周期短的对象的引用 内存泄漏形象的比喻是"操作系统可提供给所有进程的存储空间正在被某个进程榨干",最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃.所以"内存泄漏"是从操作系统的角度来看的.这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于…