![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
温文尔雅小禽兽
这个作者很懒,什么都没留下…
展开
-
Java程序计数器
程序技术器是一块较小的内存空间,他可以看作是当前线程执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖计数器来完成。 由于java虚拟机的多线程是通过线程轮流切换并分配处理器...原创 2018-11-28 10:32:42 · 530 阅读 · 0 评论 -
Serial收集器
Serial 收集器是最基本、发展历史最悠久的收集器,曾经(在JDK 13.1之前)是虚拟机新生代收集的唯一选择。 大家看名字就会知道,这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅说明它只会使用个CPU 或条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束CSopThe World"这个名字也许听起来很酷,但这项工...原创 2018-12-14 17:03:09 · 433 阅读 · 0 评论 -
深入理解java虚拟机之垃圾收集器
如果说手机算法是垃圾回收的方法论,那么垃圾收集器就是内存回收的具体表现,java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大的差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合出各个年代多使用的收集器,这里头论的收集器主要是基于JDK1.7Updata 14之后的HotSpot虚拟机(在这个版本中正式...原创 2018-12-14 15:56:41 · 130 阅读 · 0 评论 -
垃圾收集算法之 复制算法
为了解决效率问题,一种称为“复制”(Copying)的收集算法出现了,它将可用内存按容量划分为大小相等的两块,每次只使用其中的一一块。当这一块的内存用完了 ,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。这样使得每次都是对整个半区进行内存回收,内存分配时也就不用考虑内存碎片等复杂情况,只要移动堆顶指针,按顺序分配内存即可,实现简单,运行高效。只是这种算法...原创 2018-12-06 17:49:05 · 369 阅读 · 0 评论 -
垃圾收集算法之 标记--清除算法
由于垃圾收集算法的实现涉及大量的程序细节,而且各个平台的虚拟机操作内存的方法又各不相同,因此本博客不过多的讨论算法的实现,只是介绍几种算法的思想及发展过程。 最基础的收集算法是“标记-清除”(Mark-Sweep) 算法,如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象,它的标记过程其实在...原创 2018-12-06 17:38:36 · 126 阅读 · 0 评论 -
java反射详解及简单例子
大白话说Java反射:入门、使用、原理 目录一个简单的例子反射常用API获取反射中的Class对象通过反射创建类对象通过反射获取类属性、方法、构造器反射源码解析文章首发于【博客园-陈树义】,点击跳转到原文《大白话说Java反射:入门、进阶、原理》反射之中包含了一个「反」字,所以想要解释反射就必须先从「正」开始解释。一般情况下,我们使用某个类时必定知道它是什...原创 2018-12-12 15:41:04 · 177 阅读 · 0 评论 -
深入理解jvm之 对象的创建
java是一门面向对象的编程语言,在java程序的运行中无时无刻都在有对象被创建,在语言层面上,创建对象仅仅是一个new关键字的作用。 而在虚拟机中,虚拟机遇到条new指令时,首先将去检查这个指令的参数在常量池中是否有一个类的符号引用,并且检查这有,那必须先执行相应的类加校指令时,首先将去检查这个指令的参数是否能在常量池中定位到一这个符号引用代表的类是否...原创 2018-12-12 15:26:02 · 124 阅读 · 0 评论 -
深入理解java虚拟机之java堆
对于大多数应用来说,Java 堆(Java Heap)是Java虚拟机所管理的内在中最大的一块。Java堆是被所有线程共享的一块内存区域, 在虚拟机启动时创建。此内存区域的唯一目 的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一- 点在Java虛拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换...原创 2018-11-28 14:28:20 · 156 阅读 · 0 评论 -
深入理解java虚拟机之本地方法栈
本地方法栈与虚拟机栈发挥的作用是非常相似的,他们之间的区别不过是虚拟机栈位虚拟机执行java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。在虚拟机规范中对本地方法栈中方法使用的语言、使用方式与数据结构并没有强制规定,因此具体的虚拟机可以自由实现它,。甚至有的虚拟机直接就把本地方法栈和虚拟机栈合二为一。与虚拟机栈一样,本地方法栈区域也会抛出StackO...原创 2018-11-28 14:23:26 · 220 阅读 · 0 评论 -
深入了解Java虚拟机之Java虚拟机栈
与程序计数器(想了解计数器看我上一篇博客)一样,Java虚拟机栈也是线程私有的,他的生命周期与线程相同,虚拟机栈描述的是Java方法执行的内存模式:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息,每一个方法从调用直至执行完成的过程,就是对应着一个栈帧在虚拟机中入栈到出栈的过程。 经常有人把java内存区域分为堆内存和栈内...原创 2018-11-28 12:40:36 · 143 阅读 · 0 评论 -
ParNew收集器
ParNew收集器其实就是Serial收集器的多线程版本,除了使用多线程进行垃圾收集之外,其与行为包括Serial收集器都可用的所有控制参数(例如 :-XX:SurvivorRatio、-XX:PretenureSizeThreshold\ -XX:HandlePromotionFailure 等)、手机算法、Stop The World、对象分配规则、回售策略等都与Serial收...原创 2018-12-15 10:53:51 · 861 阅读 · 0 评论