课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Java虚拟机的学习与应用是我们在学习Java编程开发语言的时候需要重点掌握的一个编程开发知识点,下面我们就通过案例分析来简单了解一下,Java虚拟机基础知识点分享。
JVM 内存分配及申请过程
当使用 new 关键字或者其他任何方式进行创建一个类的对象时,JVM 虚拟机需要为该对象分配内存空间,而对象的大小在类加载完成后已经确定了,所以分配内存只需要在 Java 堆中划分出一块大小相等的内存,JVM 虚拟机中有指针碰撞和空闲列表两种方式分配内存。
指针碰撞方式
如果 Java 堆中内存是规整排列的,所有被用过的内存放一边,空闲的可用内存放一边,中间放置一个指针作为它们的分界点,在需要为新生对象分配内存的时候,只要将指针向空闲内存那边挪动一段与对象大小相等的距离即可分配。
代表 GC 回收器
ParNew,Serial,G1
空闲列表方式
如果 Java 堆中内存不是规整排列的,用过的内存和可用内存是相互交错的,这种情况下将不能使用指针碰撞方式分配内存,Java 虚拟机需要维护一个列表用于记录哪些内存是可用的,在为新生对象分配内存的时候,在列表中寻找一块足够大的内存分配,并更新列表上的记录。
代表 GC 回收器
cms
Java 虚拟机选择策略
Java 虚拟机采用哪种方式为新生对象分配内存,取决于所使用的垃圾收集器,当垃圾收集器具有整理过程时,虚拟机将采用指针碰撞的方式;当垃圾收集器的回收过程没有整理过程时,则采用空闲列表方式。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。