JVM
码农麒麟
码农小白要开车了。
展开
-
深入理解JVM类加载
以下知识点大家可以结合一个实例去理解: Java中类内带static关键字属性的初始化顺序 当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续...原创 2019-10-29 10:36:43 · 123 阅读 · 0 评论 -
从JVM指令到机器指令
我们前面也聊过JVM在规范层面引入字节码的好处,但将Java字节码翻译成机器指令是需要时间的。所以如何提高Java指令到机器指令的转化效率成为每一个JVM实现必须考虑的问题。如果发挥我们的想象力来理解应该有如下方法: □ 把Java字节码直接再次编译成本地可执行代码,执行的时候就没有JVM的事了。 □ JVM在运行期负责不断地解释了。 把Java字节码直接编译成机器码在有些应用场...转载 2019-10-14 09:33:51 · 434 阅读 · 0 评论 -
(JDK 1.7)MarkWord为什么有两个01标记
今天在看JVM的时候,发现对象内存布局中的对象头信息里的Mark Word有点奇怪.书上讲Mark Word字段可以通过标志位改变自己的存储内容.而不同的标志位对应有不同的状态,例如未锁定、轻量级锁定等. 存储内容 标志位 状 态 对象哈希码、对象分代年龄 01 未锁定 指向锁记录的指针 00 轻量级锁定 指向重...原创 2019-07-16 10:12:35 · 519 阅读 · 0 评论 -
对象的创建在JVM中的执行过程
在new对象的时候,jvm中的具体执行过程如下: 类加载检查.在创建对象前,jvm会检查该类是否已经被加载在虚拟机中,如果没有的话就会去执行类加载;待类加载完成后才会在内存中创建这个对象的空间.原因是,每一个对象在创建之时,就已经决定了它所占用的内存空间,所以在创建对象前必须要先确认类加载完成,不然无法预留出确定的对象空间.另外的,在分配对象空间时,会涉及到分配空间方式的问题.目前主要有两种,一...原创 2019-09-30 20:57:23 · 612 阅读 · 0 评论 -
java -- JVM的符号引用和直接引用
java -- JVM的符号引用和直接引用 在JVM中类加载过程中,在解析阶段,Java虚拟机会把类的二级制数据中的符号引用替换为直接引用。 1.符号引用(Symbolic References): 符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够...转载 2019-09-30 21:00:32 · 165 阅读 · 0 评论 -
JVM中的内存担保
Minor GC:针对于Eden和Survior区的垃圾收集. Full GC:在Minor GC之上的垃圾回收,该回收时,包含对老年代的垃圾回收. 文字描述 在进行Minor GC之前,虚拟机会检查老年代最大可用的连续空间是否大于新生代所有对象总空间,如果这个条件成立,那么Minor GC可以确保是安全的.如果不成立,则虚拟机会查看HandlePromotionFailure设置值是否...原创 2019-10-08 11:41:59 · 308 阅读 · 0 评论 -
Java中的四种引用(强引用、软引用、弱引用、虚引用)
前言 一般来讲,在你写的代码中的所有对象都是强引用,其他的三个引用都需要你通过Java的类实现.以下是在Java中使用这四种引用的示例: //强引用 Object object = new Object(); //软引用 SoftReference<String> softReference = new SoftRe...原创 2019-10-09 17:22:00 · 163 阅读 · 0 评论