揭开jvm的神秘面纱

jvm有什么用

作为一个同时写java和c++的开发者,我深刻的感受到java代码可以跨平台运行的美妙。那么java是如何实现一次编译,各平台运行的呢?正是依赖jvm。“Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 reference:百度百科”

jvm的利弊

jvm的特性让java一度成为最受欢迎的语言,尤其是对于初学者。自动的垃圾回收机制让使用者可以只关注程序功能本身,去掉了指针的概念让很多初级开发甚至分不清java的方法到底是引用传递还是值传递。

但凡事都有两面性,因为高度的封装导致代码执行效率的下降,jvm报内存溢出时,如果对于jvm工作机制了解不足会感觉无从下手,抛开技术角度,java开发者常常会被c++的开发者调侃java所依赖的生态环境jvm是用c++写的种种。

关于这点,我个人觉得凡事都有利弊。没用绝对的好与不好,只有基于当前开发背景选择最合适的手段。我见过很多工作时间很久的码农在谈java的效率不行,但我看他们的代码水平,还不足以他们去谈论这一点。因为一个功能的实现,往往有千百条路,但每条路一定有最优的一种写法,只有在技术能够支撑使用者看清所有的路并选择出了最合适的一条,实现时将代码优化到极致,仍然在数据量大时处理速度落后于C/C++时,才好谈论这一点。大部分的码农仅仅是纸上谈兵,和初学者秀一下作为老手的优越罢了。如果你是一位初学者,看到这里,我希望的是你能坚定自己的选择,去探究每行代码的极限,而非搬弄文字,人云亦云,从语言的角度去讨论孰优孰劣。

jvm到底在哪里

很多初学者看java都会尝试去看<<深入理解JVM>>这本书,看来看去翻到第二章介绍jvm内存模型时看不下去了,因为现在大部分的java都用于web项目,空有一腔热情的小白们可能tomcat还没有接触,仅仅只是提交代码给领导,所以他可能并不知道jvm的实例就在每一个tomcat容器里。看着书里的demo又太过简单,仅仅只是用一些for循环去刻意让内存溢出,那这个问题就更加被凸显出来:如何将jvm的工作原理与实际工作结合起来,提高代码质量,处理碰到的相关异常。jvm主要的功能在于1 gc即垃圾回收 2 编译即类加载,带着这两点来看,这不正好就是java面向对象编程中对象的创建与管理吗。所以说,学习jvm可以让你对每个类的加载,实例化,回收有一个深入且直观的理解。

结束语

具体的jvm的介绍请自行百度吧,或者后续我想写详细的jvm调试心得。

我希望大家都是带着对于编程的热爱,对于代码极限的探究,坚信程序能够给实际生活带来巨大便利的想法加入程序员的行列,happy coding~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值