学习JVM虚拟机有什么实践意义?

问题描述

学习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垃圾加收器。后面的算是扩展吧,因此我认为后面部分的
内存模型一般并发编程都会讲述,字节码,与编译器的可能做为研究材料还行,实践意思不大。这是我的最终意见。

时间: 2024-08-04 08:04:03

学习JVM虚拟机有什么实践意义?的相关文章

深度学习在 iOS 上的实践 —— 通过 YOLO 在 iOS 上实现实时物体检测

本文讲的是深度学习在 iOS 上的实践 -- 通过 YOLO 在 iOS 上实现实时物体检测, 原文地址:Real-time object detection with YOLO 原文作者:Matthijs Hollemans 译文出自:掘金翻译计划 译者:Danny Lau 校对者:Dalston Xu ,DeepMissea 深度学习在 iOS 上的实践 -- 通过 YOLO 在 iOS 上实现实时物体检测 译者注: 在阅读这篇文章之前可能会遇到的一些名词,这里是解释(我自己也查了相当多的资

国航OA项目技术总结(二)关于JVM虚拟机中对象的创建,手机端提速的重要优化

由于JVM虚拟机对对象的销毁,程序员是不知道的:而且手机的配置肯定不如PC机,就算PC机里程序运行得多顺畅,手机里的运行速率还是不敢保证. 针对对象的问题,尽量将一次能创建的对象只创建一次: 比如中文都得这样写: public static final String TRACE = "流程跟踪";//√ public static final String TITLE = "标题:";//√ public static final String DRAFTER =&

端到端GPU性能优化在深度学习场景下的应用实践

摘要:在2017杭州云栖大会机器学习平台PAI专场上,阿里巴巴高级算法专家杨军结合具体案例分享了端到端GPU性能优化在深度学习场景下的应用实践.   本文内容根据嘉宾演讲视频以及PPT整理而成.   目前深度学习和GPU已经成为了人工智能的基础,一软一硬的结合能够帮助我们实现图像识别.语音识别以及视频的处理,那么如何优化深度学习框架与GPU资源也是机器学习平台的一个研究方向.   本次分享主要分为以下5个部分: 1.         背景介绍 2.         优化思考 3.        

基于强化学习的虚拟机资源自动配置

基于强化学习的虚拟机资源自动配置 李文婵 彭志平 虚拟机技术允许多个虚拟机在同一台物理主机上共享资源.为了响应应用需求的变化或者是资源供应的变化,分配到虚拟机上的资源应该能够动态的重新配置.为此,本文提出了一个基于强化学习的算法来自动处理配置进程,即(Standard Reinforcement Learning Auto-Configuration). 强调了基于算法的模型来解决在资源管理系统的稳定性和适应性问题.这里通过在一个云环境仿真软件CloudSim在基于虚拟机的云测试床实施具有代表性

JVM虚拟机选项:Xms Xmx PermSize MaxPermSize区别(转)

java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制.否则可能导致应用程序宕掉. 举例说明含义:-Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配. 说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉. PermSize和MaxPerm

如何设置Tomcat的JVM虚拟机内存大小

Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个java虚拟机.您可以选择自己的需要选择不同的操作系统和对应的JDK的版本(只要是符合Sun发布的Java规范的),但我们推荐您使用Sun公司发布的JDK.确保您所使用的版本是最新的,因为Sun公司和其它一些公司一直在为提高性能而对java虚拟机做一些升级改进.一些报告显示JDK1.4在性能上比JDK1.3提高了将近10%到20%. 可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿.可通过命

学习SEO就是学会在实践中总结和创新

很多人都会说,学习SEO很容易的,随便在哪个学习网站上就有大把的SEO学习教材,但是事实情况却是,这些教材绝大部分是一些过时经验或者非常基础的优化方法,可以这么说:95%的SEO学习教材和知识都可以在网上找到,但是真正能把SEO做好的确往往在那5%之中,那这5%是怎么来的呢,就是要靠你不断的积累和创新,下面我们就看看需要掌握哪些方面的知识. 1. 至少需要看懂网页代码(HTML JS CSS等) 我们都知道搜索收录网页中的信息是通过蜘蛛爬行网页源代码来获取的,我们就需要懂得如何去看源代码以及如何

JVM虚拟机栈和本地方法栈溢出测试

弄JAVA,那JVM,JAVA语法,JDK库,JAVAEE,流行框架是一个都不能少,才可以有全局感的. JVM高级特性这书,看得差不多了.慢慢实践. /** * * *VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError *@author hengheng */ public class HeapOOM { private int stackLength = 1; public void stackLeak() { stackLengt

学习JVM之java内存区域与异常_java

一.前言 java是一门跨硬件平台的面向对象高级编程语言,java程序运行在java虚拟机上(JVM),由JVM管理内存,这点是和C++最大区别:虽然内存有JVM管理,但是我们也必须要理解JVM是如何管理内存的:JVM不是只有一种,当前存在的虚拟机可能达几十款,但是一个符合规范的虚拟机设计是必须遵循<java 虚拟机规范>的,本文是基于HotSpot虚拟机描述,对于和其它虚拟机有区别会提到:本文主要描述JVM中内存是如何分布.java程序的对象是如何存储访问.各个内存区域可能出现的异常. 二.