读书笔记
Esther_Lee
这个作者很懒,什么都没留下…
展开
-
《深入理解java虚拟机》读书笔记(四)---java内存模型
《java虚拟机规范》中曾试图定义一种“java内存模型”(JMM)来屏蔽各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台上都能达到一致的内存访问效果。 主内存和工作内存 Java内存模型的主要目的是定义程序中各种变量的访问规则,即关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节。 java内存模型规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的数据。不同的线程之间也无法直接原创 2020-06-28 15:54:34 · 6918 阅读 · 0 评论 -
《深入理解java虚拟机》读书笔记(三)
HotSpot虚拟机对象的创建 在java中对象的创建一般使用new关键字 当jvm遇到一条字节码new指令,首先去检查指令的参数是否能在常量池定位到一个类的引用,并且检查这个类是否被加载,解析和初始化过。如果没有就进行类的加载操作。 类加载之后,jvm为对象分配内存。对象所需的内存在加载之后就可以确定。分配的方法可以分为两种: 一:java堆的内存绝对规整。一边放着已使用的,另一边放着未使用的...原创 2020-04-27 12:42:10 · 274 阅读 · 1 评论 -
《深入理解java虚拟机》读书笔记(二)
垃圾回收机制 进行垃圾回收的前提是判断对象是否还活着,这就引出两种判断的方法。 引用计数法:给对象添加一个引用计数器,每当有一个地方引用就加一,引用失效的时候减一。在任何时候引用计数器都为0的时候就证明对象不可被引用。 java不使用的原因:难以解决对象循环引用的问题 可达性分析法:通过GC Roots作为起始节点,然后开始向下搜索,走过的路径称为引用链。若一个对象到GC Roots没有任何引用...原创 2020-04-20 21:16:36 · 158 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记(一)
运行时数据区域 运行时数据区可以划分为两部分:线程隔离和线程共享的数据区。 线程隔离的包括:程序计数器,虚拟机栈和本地方法栈 程序计数器:可以看做是当前线程正在执行字节码的行号指示器。 线程隔离的原因是因为,JVM的多线程是通过多线程轮流切换,处理器分配时间完成的,在任何一个时刻,处理器只会处理一条线程的一条指令。线程切换之后依旧可以恢复到正确的指令位置就需要每个线程都有程序计数器,故线程隔离...原创 2020-04-19 22:58:47 · 207 阅读 · 0 评论