一:JVM运行时内存 1.1:如何判断一个对象生存状态 1.1.1:引用计数法 在其内部维护着一个计数器,当只要还有对象引用当前对象,计数器就加1,如果不为0,就证明该对象依然存活,如果为0,则证明没有对象引用该对象,那么该对象就是已经死了。但是会存在问题是存在互相引用,但是又是垃圾的对象的情况 1 ...
分类:
其他好文 时间:
2020-05-05 09:13:36
阅读次数:
70
本节常见面试题 如何判断对象是否死亡(两种方法)。 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。 如何判断一个常量是废弃常量 如何判断一个类是无用的类 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断那些对象已经死亡(即不能再被任 ...
分类:
其他好文 时间:
2020-05-03 20:09:51
阅读次数:
75
我们说的不同的引用类型其实都是逻辑上的,而对于虚拟机来说,主要体现的是对象的不同的 状态和对 的影响。 初识引用 对于刚接触 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)》个人译注+修订+扩展。 ...
1.内存模型以及分区。 内存模型主要由方法区、堆、栈、本地方法栈、程序计数器。 方法区:供各线程共享的运行时的内存区域。存储了类信息,运行时常量池等,还存放static变量。 堆:通过new关键字,创建对象都会使用到堆内存。存放所有new出来的对象,只保存对象本身,不保存对象的引用。 栈:程序运行时 ...
分类:
其他好文 时间:
2020-03-12 18:45:22
阅读次数:
71
以前学习强软弱虚引用的时候,只是走马观花看看博客,并没有自己写代码去实践、去证明,导致每次看完后,过不了多久就忘了,后来下定决心,一定要自己敲敲代码,这样才能让印象更加深刻,古人云:纸上得来终觉浅,绝知此事要躬行。 Java中的四种引用 Java中有四种引用类型:强引用、软应用、弱引用、虚引用。 J ...
分类:
其他好文 时间:
2020-03-09 11:46:50
阅读次数:
63