太原java编程开发关于虚拟机的作用分析

2018/11/6 13:42:22 作者:Java技术精选发布企业:太原达内科技有限公司[打印]

对于java程序员来说,虚拟机可以说是在接触到java编程语言的时候就开始使用和操作的一个工具了。而今天我们就一起来了解一下,虚拟机对于的作用有哪些。

跟许多人一样,我一开始接触Java虚拟机只是因为面试需要用到,所以硬着头皮看看。所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试。但我经过了几年的学习和实战,我发现其实学习虚拟机并不仅仅在于面试,而在于更深入地理解Java这门语言,以及为未来排查线上问题打下基础。

先聊聊我的一个观点:学习Java虚拟机能深入地理解Java这门语言。对于刚刚工作一两年的朋友来说,各个API都没用熟,自然不会去深入研究Java中的各种细节。但对于工作了三年以后的朋友来说,很多时候你要解决一个问题必须深入到字节码层次去分析,你才能得到准确的结论,而字节码就是虚拟机的一部分。

例如我们常用的布尔型Boolean,我们都知道它有两个值,true和false。但你们知道其实在运行时,Java虚拟机是没有布尔型Boolean这种类型的。Boolean型在虚拟机中使用整型的1和0表示。

例如我们都知道类路径和类名确定一个类,但事实上并不是这样。或者说,我们前面说的结论只是表面上的。如果深入到虚拟机层面来说,类加载器、类路径、类名才决定一个类。也就是说,如果两个不同的类加载器它们加载同一个class类文件,那这两个类加载器加载的类就是不同的。

类似这样的例子还有很多。学Java学到了这个程度,如果你不懂虚拟机的一些基础知识,那么你就很难深入理解一些细节。

接着我想聊聊我的二个观点:学习虚拟机是为线上排查问题打下基础。我们知道我们一个Java应用部署在线上机器上,肯定时不时会出现问题。除去网络、系统本身问题,很多时候Java应用出现问题,就是Java虚拟机的内存出现了问题。要么是内存溢出了,要么是GC频繁导致响应慢等等。

那如何解决这些问题呢先,你必须学会看懂日志吧。那么你就必须要看得懂GC日志,这是Java虚拟机内容的一部分。你看懂了GC日志,那么你就得明白什么是年轻代、老年代、永久代、元数据区等,这些就是Java虚拟机的内存模型。你懂了Java虚拟机的内存模型,那你就得知道Java虚拟机是如何进行垃圾回收的,它们使用的垃圾回收算法是怎样的,它们有何优缺点。接下来就是各种垃圾回收器的特性。

你看,这一切东西都是相关联的。你想要解决线上的Java应用崩溃问题,那么你就必须学会GC日志。要看懂GC日志,就必须学习Java虚拟机内存模型。要看懂Java虚拟机内存模型,你就要学会垃圾回收机制等等。

节选:公众号:Java技术精选

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!


关键字:太原达内,Java培训,编程培训
免责声明:以上所展示的信息由网友自行发布,内容的真实性、准确性和合法性由发布者负责。行业信息网对此不承担任何保证责任。任何单位或个人如对以上内容有权利主张(包括但不限于侵犯著作权、商业信誉等),请与我们联系并出示相关证据,我们将按国家相关法规即时移除。

其他新闻

关于我们 | 服务条款 | 网站指南 | 免责声明 | 友情链接 | 给我们留言
红盾
COPYRIGHT @ 2001-2017 CNlinfo.net ALL RIGHTS RESERVED
深圳市信息行业协会商务网站 运营商:深圳市兴讯信息技术有限公司 粤ICP备:05039908
营业执照