问题描述
- 学习JVM虚拟机有什么实践意义?
-
最近,有朋友问我你会JVM虚拟机类加载么,我的回答是,大概了解。具体内容,没办法具体讲出来?请问大家觉得需要把JVM虚拟机的原理与实现线路图弄的很明白么。有什么实践意义?毕竟,不是在做博士论文。这里关于JVM有几个知识点,大家给点意见:
1.垃圾回收算法与原理
2.类字节码规范与执行引擎
3.内存模型与线程
4.类加载机制
5.编译器
解决方案
只有学了程序背后的东西才能成为CTO
解决方案二:
如果简单开发没必要,但如果要做深,那多了解了解还是很有必要的,对解决问题和更深层次的理解一行代码的原理是很有帮助的。
别人知道表面的语法,但你看到一行代码就看到的是整个运行机制,站的高度不一样,写出来的代码质量和灵活性肯定就不同。
就像编程要不要理解操作系统原理一样,不理解,很多问题就两眼一抹黑,很难解释清楚,但知道些的话,很多问题和机制就很好解释清楚了。
看不同层次的不同需要吧,多看些不是坏处。
解决方案三:
要深入学习java Java虚拟机必学,不然要成为高手,不可能
解决方案四:
看你想往哪个方向发展了,如果最后走管理,那么你不了解也没关系,如果你走技术流,那么就一定要看。任何底层的原理知识都要了解。
解决方案五:
启发思维,开阔眼界。首先学会Java编码,仅仅是掌握了一门编程语言,只是知其然。当你深入JVM里面看看之后,就是知其所以然的境界了。
然后会对于某些语法,就可能会顿悟其中的精妙;某些类为什么会被废弃,洞悉那些语言大师们的精华。
那时候你眼中看到的就不是代码了,而是跟代码有关的底层的东西了;写代码时也会考虑不同的实现方法会怎么影响代码运行?
个人从事Java的体会,共勉,祝好!
解决方案六:
当你去做Java性能分析、调优的工作时,你就知道为什么要学习JVM了。
解决方案七:
作为一个.net程序员,我们需要了解clr,并且clr是闭源的。我可以告诉你为什么要了解clr,这里面的道理对于jvm之于java应该是相通的。
最关键的两条理由是平台互操作和调试程序。为什么说这是最重要的两条呢?因为即便你不是资深开发者,出于项目的需要,你也躲不开这两条。平台互操作就是用C#去访问别的语言编写的代码或者反之,这是实际项目必须面对的问题,并且直面包括内存分配、类型封送等等问题,特别是com接口,复杂且和clr有很深的渊源。所以不得不学。另一个是调试,特别是当我们不能使用vs内置的调试器调试的时候,有时候我们会直面IL机器码(相当于java字节码),并且需要从IL的层面理解C# VB编译器是如何产生代码的,这又必须涉及clr。特别是多线程环境,如果你不懂clr,看到汇编级的错误基本就束手无策了。除了以上两点,那么深入理解clr对于性能调优、在IL层面使用别的编程语言,通讯,编写框架代码等,也有很多用处。
解决方案八:
实践层面说,这个研究低层的实际意义有多大,是否值得思考 ?我在发本贴时,我就找了本jvm看了。我学是觉得实践价值不够大,除了Jvm垃圾加收器,可以研究下
解决方案九:
在发贴之后,我找了本《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》看了下。认为1-5章,有一定的实践意义。其它讲述字节码执行,编译器类型没有太大实践意义 。
内存模型一般,深一点并发编程就会介绍,谈不上jvm内部的东西了。这是我的最终看法。
解决方案十:
我是研究了下《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》。前5章,讲的是Jvm内部结构与Jvm垃圾加收器。后面的算是扩展吧,因此我认为后面部分的
内存模型一般并发编程都会讲述,字节码,与编译器的可能做为研究材料还行,实践意思不大。这是我的最终意见。