一、简介 使用MAT来分析内存问题,有一些门槛,会有一些难度,并且效率也不是很高,对于一个内存泄漏问题,可能要进行多次排查和对比才能找到问题原因。 为了能够简单迅速的发现内存泄漏,Square公司基于MAT开源了LeakCanary 二、使用 在app build.gradle 中加入引用: dep ...
分类:
其他好文 时间:
2020-05-22 19:05:39
阅读次数:
66
一:JVM运行时内存 1.1:如何判断一个对象生存状态 1.1.1:引用计数法 在其内部维护着一个计数器,当只要还有对象引用当前对象,计数器就加1,如果不为0,就证明该对象依然存活,如果为0,则证明没有对象引用该对象,那么该对象就是已经死了。但是会存在问题是存在互相引用,但是又是垃圾的对象的情况 1 ...
分类:
其他好文 时间:
2020-05-05 09:13:36
阅读次数:
70
本节常见面试题 如何判断对象是否死亡(两种方法)。 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。 如何判断一个常量是废弃常量 如何判断一个类是无用的类 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断那些对象已经死亡(即不能再被任 ...
分类:
其他好文 时间:
2020-05-03 20:09:51
阅读次数:
75
解决方法就是在AppDelegate.h中按照以前的方法添加一个UIWindow *window的属性即可,因为iOS13以下根本没有UIScene这一层 在AppDelegate.h中少了@property (strong, nonatomic) UIWindow * window; ...
分类:
移动开发 时间:
2020-04-30 17:41:18
阅读次数:
145
我们说的不同的引用类型其实都是逻辑上的,而对于虚拟机来说,主要体现的是对象的不同的 状态和对 的影响。 初识引用 对于刚接触 Java 的 C++ 程序员而言,理解栈和堆的关系可能很不习惯。在 C++ 中,可以使用 new 操作符在堆上创建对象,或者使用自动分配在栈上创建对象。下面的 C++ 语句是 ...
分类:
其他好文 时间:
2020-04-25 18:57:33
阅读次数:
56
一、ThreadLocal是什么? 一个类对象类型,提供属线程本地变量,也就是同一个变量对不同线程保存了不同的值,但是和线程自身定义的自属变量不同。 通常以私有静态类型定义,用以保存特定线程特定状态属性。 线程存活期间保持对ThreadLocal的弱引用,线程结束后,则变量会被垃圾回收器回收。 二、 ...
分类:
其他好文 时间:
2020-04-19 00:34:53
阅读次数:
69
结构体objc_object就是我们常用的id类型 objc_object包括 isa_t isa操作相关 弱引用相关 关联对象相关 内存管理相关 objc_class结构体对应我们平常使用的Class objc_class继承自objc_object 包括 Class superClass; ca ...
分类:
其他好文 时间:
2020-04-16 22:47:06
阅读次数:
82
强引用:(StrongReference) 强引用指普通的对象引用 例如: StringBuffer str = new StringBuffer("hello world"); 局部变量str会被放到栈里,而StringBuffer实例对象会被放在堆内,局部变量str指向堆内的StringBuff ...
分类:
其他好文 时间:
2020-04-05 11:29:49
阅读次数:
72
《C#高级编程第11版 - (Professional C# 7.0 and .NET Core 2.0)》个人译注+修订+扩展。 ...