摘要: 强软弱虚,是 Java 中比较主流的四种引用。(多念念,就顺口了) 从这四种引用的作用来看(接下来你会看到),引用,与对象的存活密不可分。也许正是因为有了 JVM 的垃圾收集器,才有了这四种引用。 我觉得直接看四种引用的概念比较好: 强引用;无论何时,只要有强引用关系的对象,都不会被垃圾回收器回收掉 阅读全文
posted @ 2020-06-21 19:06 土堆碎念 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了垃圾回收器几个方面的内容: 如何标记垃圾 如何处理垃圾 那么还有什么问题要解决呢? 既然是自动垃圾回收,那么自动是什么情况呢? 在我看来,自动主要来自两个方面: 当我们年轻代、老年代内存不足时,触发某种条件,进行垃圾收集 还有一个就是我们接下来说的安全点、安全区域 安全点 为什么要有安全点 阅读全文
posted @ 2020-06-21 15:36 土堆碎念 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了如何去识别和标记垃圾,现在主要介绍,如何去回收(处理、删除)这些垃圾? 你也许会想,找到了直接删掉不就行了吗? 恭喜你,已经学会了一个很重要的算法。 标记-清除(Mark-Sweep) 标记-清除算法,主要分为两个步骤,标记 和 清除。标记,就使用之前说过的 可达性分析算法,即可进行标记。 阅读全文
posted @ 2020-06-21 14:03 土堆碎念 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 这里介绍的垃圾回收相关算法,主要解决的问题: 判断哪些内存是垃圾(需要回收的)? 常用的两种算法: 引用计数 可达性分析(GC Root) 首先介绍算法前,得定义: 如何判断一个对象的死亡? 我们一般这样定义:当一个对象不再被任何存活的对象继续引用的时候,这个对象就死亡了。 引用计数 引用计数算法, 阅读全文
posted @ 2020-06-21 11:13 土堆碎念 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 这一篇,是重点!我们将去讲解操作系统根据代码(逻辑)地址去访问真实物理地址的全过程。 将把全面几节的东西全部用上,并完全梳理,完善细节。 前面讲了分段、分页机制,他们都可以实现,从虚拟地址(地址空间)向物理地址的转换。但是,实际使用过程中,使用的是分段+分页机制,段页结合。 段页结合 全过程分析(高 阅读全文
posted @ 2020-05-10 16:55 土堆碎念 阅读(918) 评论(2) 推荐(3) 编辑
摘要: 之前页表结构的不足 之前的页表结构看起来挺好的呀,有什么问题呢? 如果每个页的大小是4k,也就是2的12次方。如果是32位的地址话,也就是说,有2的20次方个页。 那么对应到页表,也就说页表应该有2的20次方个项。因为每个项表示的是一个内存地址,也就说一个项的大小是32位,也就是4个字节。 这样算下 阅读全文
posted @ 2020-05-09 16:28 土堆碎念 阅读(1961) 评论(0) 推荐(0) 编辑
摘要: 前面说到了采用分段技术来进行虚拟地址(地址空间)到物理内存的转换。 分段有什么问题? 肯定得有不足,才需要提出新的技术来改进。那么我们刚才的分段机制,不是挺好的嘛?有什么问题呢? 比如说,我们现在存放一些内容,需要占用 160K 的空间,但是我们来看空间的地址空间,分别是150K和50K,每个段都不 阅读全文
posted @ 2020-05-09 16:11 土堆碎念 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 背景 我们一般把内存看成一块连续的字节数组。我们通过指定地址来访问其中的内容。 我们看到图上,0KB 64KB 地址范围内,存放着操作系统。 如果现在 A 同学想要写一个程序,它指定代码放在64KB 128KB的位置。 现在B同学也写了一个程序,为了避免覆盖A同学程序,需要指定将代码放在128KB以 阅读全文
posted @ 2020-05-09 15:24 土堆碎念 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 我们可以写一段简单的c代码(code/memory/segment_1.c): 然后将其转为汇编,运行: 之后会生成一个.s 文件(code/memory/segment_1.s),不用细看内容。 我们发现,这个汇编代码中,有 .string main .text,反正分为不同的块。 进程在内存中, 阅读全文
posted @ 2020-05-07 17:42 土堆碎念 阅读(916) 评论(1) 推荐(1) 编辑
摘要: 字符串 Java 和 c++ 都支持字符串,但在使用方面有所区别。 初始化,Java 的初始化方式比较简朴,= 后加上字符串即可。c++ 可以在变量后,使用括号进行多次重复或者进行赋值。除此之外,Java 可以两个字面量进行直接连接,而c++ 需要字面量另一边需要有一个字符串变量才可以。 取值方式不 阅读全文
posted @ 2020-03-27 13:33 土堆碎念 阅读(315) 评论(0) 推荐(0) 编辑