加载中...

随笔分类 -  jvm

JVM
摘要:线程安全与锁优化 1. 线程安全 什么是线程安全: 《 Java 并发编程实战(Java Concurrency In Practice)》的作者 Brian Goetz为“线程安全”做出了一个比较恰当的定义:“当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需 阅读全文
posted @ 2024-10-07 18:24 strind 阅读(58) 评论(0) 推荐(0) 编辑
摘要:Java与线程 1. 线程的实现 线程是比进程更轻量级的调度执行单位,线程的引人,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件IO等),又可以独立调度。目前线程是Java里面进行处理器资源调度的最基本单位。 主流的操作系统都提供了线程实现,Java语言则提供了在 阅读全文
posted @ 2024-10-07 11:55 strind 阅读(6) 评论(0) 推荐(0) 编辑
摘要:1. 硬件的效率与一致性 物理机遇到的并发问题与虚拟机中的情况有很多相似之处,物理机对并发的处理方案对虚拟机的实现也有相当大的参考意义。 “让计算机并发执行若干个运算任务”与“更充分地利用计算机处理器的效能”之间的因果关系,看起来理所当然,实际上它们之间的关系并没有想象中那么简单,其中一个重要的复杂 阅读全文
posted @ 2024-10-06 12:58 strind 阅读(22) 评论(0) 推荐(1) 编辑
摘要:书接上回。。 3. 类加载器 Java虚拟机设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动作的代码被称为“类加载器”(ClassLoader)。 3.1 类与类加载器 类加载器 阅读全文
posted @ 2024-10-04 10:44 strind 阅读(9) 评论(0) 推荐(1) 编辑
摘要:1. 类加载时机 一个类型(接口/类)从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备、解析三个部分统称为连接(Linking)。 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程必须按照这种顺 阅读全文
posted @ 2024-10-03 17:48 strind 阅读(12) 评论(0) 推荐(0) 编辑
摘要:1. 运行时数据区 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,创建和以及销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有的区域则是依赖用户线程的启动结束而建立和销毁。 1.1 程序计数器(线程私有) 程序计数器(Program 阅读全文
posted @ 2024-10-03 12:00 strind 阅读(18) 评论(0) 推荐(0) 编辑
摘要:1. 对象“已死”? 垃圾收集器在对堆进行回收之前,第一件事情就是要确定哪些对象是‘活着’的哪些是已经‘死去’的。 1.1 引用计数法 简单理解就是,在对象中添加一个引用计数器,当一个地方引用到它时,计数器就 +1,当引用失效时,计数器就 -1,任何时刻,当计数器的值为0时,对象就是不在被使用的状态 阅读全文
posted @ 2024-09-27 17:19 strind 阅读(54) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示