深入理解JVM笔记
文章平均质量分 86
Gingost
nooooooooooooooooob
展开
-
第二章 垃圾回收
对象生死 前言 在堆中存放的着Java世界中几乎所有的对象实例,垃圾收集器在对堆中进行回收前,需要判断哪些对象“存活”,哪些对象已经“死亡”(不可能再被任何途径使用)。 引用计数法 很多教科书判断对象是否存活的算法是这样的:在对象中添加一个计数器,每当有一个地方引用它时,计数器就+1;当饮用失效时,计数器就-1;当计数器为0时,则标示这个对象失去引用,成为一个死亡对象。客观的来说,引用计数法虽然占用了一些额外的内存空间,但是原理简单,判定效率很高,在大多数情况下都是一个不错的算法。但是在Java领域,主流原创 2021-05-10 22:32:55 · 181 阅读 · 2 评论 -
Mac编译openJDK11
环境 MacOS Bigsur 11.2.3 Xcode12.5(不需要额外下载command line tools,这玩意不是早就集成了吗) HomeBrew CLion 2019.3 .bash_profile不需要做额外配置(重装了一次系统 我这还没配置.bash_profile) 编译用Bootstrap jdk11,之前安装好的jdk8不用管,不冲突,这里如果你想编译12的jdk,本机至少要准备11的jdk环境,非常不推荐编译jdk8,非常不推荐编译jdk8,非常不推荐编译jdk8坑实在是太多,原创 2021-05-10 20:04:06 · 367 阅读 · 0 评论 -
第一章 Java内存区域
目录1.内存模型2.对象创建2.1 对象内存布局2.2对象分访问定位 1.内存模型 1.程序计数器,线程私有区域,占用空间较小,主要记录当前线程所执行的字节码的行号指示器。由于java虚拟机的多线程是通过线程轮流切换、分配处理器执行时间的方式来实现的(意思就是在任何一个确定的时刻,一个处理器,都只会执行一个线程中的指令),因此在多线程切换后为了确保程序能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,并且相互隔离。 2.栈,一般说栈都是指虚拟机栈,线程私有区域,生命周期和线程相同,栈主要描述的是原创 2021-05-08 11:29:16 · 99 阅读 · 0 评论