JVM
恶心的小达达
90后的我们,加油!
展开
-
JVM(一) 运行时数据区域
总览其中方法区、堆是线程共享的,而虚拟机栈、本地方法栈、程序计数器是线程隔离的。程序计数器程序计数器是一块较小的内存空间,他可以是看做当前线程所执行的字节码得到行号指示器,通过这个计数器的值来选取下一条需要执行的指令、分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。例: 当线程A执行到第2行,CPU切换到线程B的第1行,当线程B执行到第4行,CPU切换到线程A...原创 2019-05-19 16:12:38 · 162 阅读 · 0 评论 -
jvm(二) 关于java对象
对象的创建(1)指针碰撞:将用过的内存和没用的内存各在一边每次分配的时候只需要将指针向空闲内存一方移动一段和内存大小相等区域即可。(2)空闲列表:虚拟机会维护一个空闲的列表,用于记录哪些内存是可以进行分配的,分配时直接从可用内存中直接分配即可。(3)内存空间初始化:虚拟机将分配到的内存空间都初始化为零值(不包括对象头),如果使用了TLAB,这一工作过程也可以提前至TLAB分配时进行,内存空...原创 2019-05-19 17:47:34 · 155 阅读 · 0 评论 -
对象生存还是死亡?
在堆里面存放着 Java 世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。引用计数算法 引用计数算法的思想是:给对象添加一个引用计数器,每当有一个地方引用它...原创 2019-05-20 00:12:27 · 185 阅读 · 0 评论 -
JVM整理
jvmjava运行时数据区域程序计数器当前线程运行的行号指示器,计数器的任务就是用来调度字节码的执行(分支,循环,跳转,异常处理等),以及线程切换后能记录上次执行的位置java虚拟机栈每一个方法执行的同时都会创建一个栈帧(用于存储局部变量表、操作数栈、动态链接、方法出口等信息),每一个方法的执行就是进栈和出栈的过程,本地方法栈本地方法栈则为虚拟机使用到的Native方法服...原创 2019-09-04 11:01:47 · 287 阅读 · 0 评论