ITPub博客

首页 > 应用开发 > Java > 好程序员Java分享JVM从哪方面入手学习

好程序员Java分享JVM从哪方面入手学习

原创 Java 作者:好程序员IT 时间:2019-09-20 11:17:38 0 删除 编辑

   好程序员Java分享 JVM从哪方面入手 学习, 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎。不管是工作还是面试中,JVM都是必考题。如果不懂JVM的话,薪酬会非常吃亏。掌握了JVM机制,就等于学会了深层次解决问题的方法。对于Java开发者而言,只有熟悉底层虚拟机的运行机制,才能通过JVM日志深入到字节码的层次去分析排查问题,发现隐性的系统缺陷,进而提升系统性能。

   一些技术人员开发工具用得很熟练,触及JVM问题时却是模棱两可,甚至连内存模型和内存区域,HotSpot和JVM规范,都混淆不清。工作很长时间,在生产时还在用缺省参数来直接启动,以致系统运行时出现性能、稳定性等问题时束手无措,不知该如何追踪排查。久而久之,这对自己的职业成长是极为不利的.

   学习JVM首先需要了解Java的运行时数据区域,Java的数据区域包括程序记录器,Java

   虚拟机栈,本地方法栈,堆,方法区,运行时常量池和直接内存.在这些内存区域内,最为重要的是方法栈和堆内存。

   其次需要了解到对象的构建过程,对象的内存布局,内存的布局包括三块区域——对象头、实例数据和对其填充。更为重要的是关于对象创建后的访问方式,包含句柄和直接指针的方式。在这里句柄的访问方式最为重要,句柄的最大好处是 reference 中存储的是稳定的句柄地址,在对象移动(GC)是只改变实例数据指针地址,reference 自身不需要修改。直接指针访问的最大好处是速度快,节省了一次指针定位的时间开销。如果是对象频繁 GC 那么句柄方法好,如果是对象频繁访问则直接指针访问好。

   最后需要了解到JVM的垃圾回收机制和内存分配机制,需要了解到引用计数法,可达性分析法,这两种方法是配合使用的,引用计数计算对象的引用次数,而可达性分析法会分析对象的访问情况。在垃圾回收中,需要针对每一代的算法进行了解,涉及到新生代的标记-清除算法,老年代的标记整理算法,以及分代算法。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69913892/viewspace-2657660/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
欢迎关注公众号:好程序员特训营 web前端教程分享 723729549 大数据教程分享 703503210

注册时间:2019-03-20

  • 博文量
    539
  • 访问量
    410787