随笔分类 -  jvm

摘要:一、自旋锁与自适应自旋 互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力。 让后面请求锁的那个线程“稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自 阅读全文
posted @ 2019-12-01 23:10 king_wq_庆 阅读(170) 评论(0) 推荐(0)
摘要:一、java内存模型 Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变 阅读全文
posted @ 2019-12-01 22:37 king_wq_庆 阅读(154) 评论(0) 推荐(0)
摘要:一、虚拟机类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 二、类加载时机 类的生命周期:加载(Loading)、验证(Verification)、准备(Preparation)、解 阅读全文
posted @ 2019-12-01 18:38 king_wq_庆 阅读(163) 评论(0) 推荐(0)
摘要:一、 垃圾收集算法 1. 标记-清理算法 “标记-清除”(Mark-Sweep)算法:算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 缺陷:1)效率问题,标记和清除两个过程的效率都不高; 2)标记清除之后会产生大量不连续的内存碎片。空间碎片太 阅读全文
posted @ 2019-12-01 00:18 king_wq_庆 阅读(333) 评论(0) 推荐(0)
摘要:1. 堆内存 堆大小 = 新生代 + 老年代。其中,堆的大小可以通过参数 –Xms、-Xmx 来指定。 默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ),即:新生代 ( Young ) = 1/3 的堆空间 阅读全文
posted @ 2019-11-30 23:09 king_wq_庆 阅读(275) 评论(0) 推荐(0)
摘要:一、 判断对象“已死” 1. 引用计数法:给对象中添加一个引用计数器,每当有一个地方引用他,计数器值+1;当引用失效,计数器 -1。计数器为0则表示,对象没有被使用。 缺陷:循环引用问题。 2. 可达性分析算法:通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过 阅读全文
posted @ 2019-11-30 22:35 king_wq_庆 阅读(221) 评论(0) 推荐(0)
摘要:1. 程序计数器(线程私有) 程序计数器,是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时时通过改变程序计数器的值来选取下一条需要执行的字节码指令。 作用:分支、循环、异常处理、线程恢复等。 正在执行 java 方法的话,计数器记录的是虚拟机字节码 阅读全文
posted @ 2019-11-30 22:05 king_wq_庆 阅读(149) 评论(0) 推荐(0)