目录

zrlong 的个人博客

希望大家都能保护好自己身上的特质,无论是五年还是十年,永远善良,不服输,热爱你所热爱。在漫长岁月的变迁里,是这些让你永远迷人,富有生命力。

标签: JVM (2)

JVM之对象探秘 有更新!

对象的创建 Java是一门面向对象的语言,在程序运行过程中每时每刻都有对象被创建出来。当我们需要对象时,我们就可以直接new一个,看似十分简单,但是其中的原理是什么呢? 检查 当Java虚拟机遇到一条字节码new指令时,首先会去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,同时也会检查这个符号引用代表的类是否已经被加载、解析和初始化。如果没有则先进行类的加载过程(后续再进行总结)。 分配内存 对象所需内存的大小在类加载完成后就可以完全确定了。接下来就是给对象分配内存了。 指针碰撞(Bump The Pointer) 假设Java对内存空间是完全规整的,被使用过的对象都放在一边,空闲的空间在另一边,中间有一个指针作为分界的指示器,分配的内存就是把指针向空闲的地方移动一段与对象大小相等的内存。 空闲列表(Free List) 如果Java堆内存的空间是不规整的,已使用和未使用的内存交错在一起,此时就无法使用“指针碰撞”的方法了。因此,虚拟机需要记录下来那些空间内存是能够使用的,在分配对象是选择足够大的空间。 选择那种方式是取决于堆内存是否规整的,Java堆....

JVM之运行时数据区 有更新!

近期学了JVM,现在对JVM知识进行总结。这节是关于JVM运行时数据区的主要内容的介绍。