JVM
文章平均质量分 90
白日905
这个作者很懒,什么都没留下…
展开
-
类加载的过程
加载验证准备解析初始化。原创 2024-04-10 19:13:23 · 428 阅读 · 0 评论 -
垃圾收集算法
哪些内存需要回收什么时候回收如何回收在之前我们了解的Java运行时内存的各个区域中,其中的程序计数器,虚拟机栈和本地方法栈都是线程私有的,它们随着线程生和灭。因此这些线程私有的区域一般是不需要考虑垃圾回收。而在Java堆和方法区这两个区域有显著的不确定性,只有处于运行期间,我们才能知道程序究竟会创建哪些对象,创建多少个对象,这部分内存的分配和回收是动态的。因此JVM的垃圾收集器主要都是针对堆和方法区的内存管理。原创 2024-04-10 19:12:47 · 302 阅读 · 0 评论 -
JVM类加载器
JVM设计团队有意把类加载阶段中的“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需的类。实现这个动 作的代码被称为**“类加载器”**(原创 2024-04-10 19:12:04 · 271 阅读 · 0 评论 -
Java内存区域
对于C和C++程序员来说,在内存管理上,它们既能拥有每一个对象的所有权,又担负着每一个对象从开始到结束的维护责任。这虽然给了它们对内存操作更大的自由,但也带来了很多繁琐的工作。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对 的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。原创 2024-04-10 19:11:33 · 314 阅读 · 0 评论 -
HotSpot虚拟机对象
如果Java堆中的内存并不是规整的,已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称 为“假设Java堆中的内存是规则的,即使用过的内存放在一边,没有使用过的放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个。而在Java中访问对象是非常频繁的操作,因此在JVM中通过使用这种方式来进行对象的访问定位。原创 2024-04-09 21:44:19 · 799 阅读 · 0 评论 -
类加载的时机
我们使用Java语言编写的文件在编译后都会形成.class类文件,在Class文件中描述了类的各类信息。而这些信息都是需要加载到JVM虚拟机中才能够被运行和使用。因此我们需要了解JVM如何加载这些Class文件,加载Class文件后又会进行什么操作。这段代码不会触发父类的初始化,但会触发“[L 全类名”这个类的初始化,它由虚拟机自动生成,直接继承自 java.lang.Object,创建动作由字节码指令 newarray 触发。原创 2024-04-09 21:43:43 · 888 阅读 · 0 评论