聊聊JVM

JVM,一个熟悉又陌生的名词,从认识Java的第一天起,我们就会听到这个名字,在参加工作的前一两年,面试的时候还会经常被问到JDK,JRE,JVM这三者的区别。

JVM可以说和我们是老朋友了,但是在工作中的应用场景也许不如那些框架,但是在关键时候还是得靠它去搞定问题,俗话说得好,知己知彼,方能百战不殆,JVM作为前往高级工程师的一道坎,从这篇文章开始,我们会去逐步的分析,讲解,攻克这座大山。

什么是JVM

JVM(Java Virtual Machine),翻译成中文就是Java虚拟机,总所周知,Java语言有一个非常鲜明的特性,也是前期Java 发展的口号之一

Write Once Run Everywhere

"一次编写,到处运行",相信作为一名Java开发人员,我们对这句话都不会陌生,这句话的底气就来源于我们的JVM。

其中的原理就是,我们所编写的源程序java文件,被编译成了JVM可以识别的字节码文件(以class为后缀的文件),到处运行所依赖的其实就是为不同的平台实现了不同的虚拟机。

java的程序运行在JVM上,而非直接运行在CPU上。

JVM的学习要点

首先,我们需要知道的是,作为一个虚拟机,必定是拥有自己的内存机制,所以我们必须对他的内存机制有所了解,其中包括了内存结构,垃圾回收机制等一些内容。

其次,我们需要知道,我们写的源代码被翻译成了字节码文件(因其后缀名为class,所以也会被称为类文件),对于这个文件的结构,我们必须有所了解,在知道了该类的结构下,对于一些并发和多线程的知识才能做到洞若观火,知其然知其所以然。

该字节码文件在进入虚拟机到执行之前,会经历一系列的过程,我们对于这个过程的机制一般称为类加载机制,当这个类被加载到JVM中,在运行的过程中,会有一系列的指令去帮助程序到达最终的目的。

其实,上面说了那么多,都是在帮助我们对于java文件的一个执行过程发生的事情有一个更深的了解,在遇到问题时,我们可以胸有成竹,刨根问底的去解决问题,但是在日常工作中,我们不会甚至肯定不会去看我们写完的字节码文件,我们关心的是如何使用工具去调优,使最低的成本发挥最高的价值,通过对JVM的调优使我们的程序的鲁棒性得到提升。

关于JVM的一个补充

虽然,JVM叫做Java Virtual Machine,但是需要注意,随着Java的发展壮大,有越来越多的语言加入到JVM生态中,比如我们耳熟能详的Groovy,Scala,Kotlin等等,他们都是依托于JVM平台的,编译产生的文件也都是后缀为class的字节码文件。

写在末尾

当亲爱的读者大人看到这篇文章的时候,说明Vi的技术博客的JVM系列已经开启更新,之前的Spring Boot系列暂告一段落(后续会不定期更新),同时最开始接触写作时写的Java基础系列也会迎来一次回炉重造,敬请期待。

很庆幸能够遇到你们,谢谢你们一直以来的支持和陪伴

java入我心_JVM(一):久识你名,初居我心相关推荐

  1. 2021-11-23----韩顺平Java入门第十四天

    韩顺平Java入门第十四天(排序.查找) 1.排序     1).排序的介绍:排序是将多个数据,依指定的顺序进行排列的过程.     2).内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序 ...

  2. JAVA 入坑教程 | 章节九 详解java的装箱和拆箱

    简单点,代码的方式简单点,装逼的方式请省略,我们又不是演员,别设计那些情节 什么是装箱?什么是拆箱?代码如何展示? 装箱过程是怎样的?拆箱过程是怎样的? 有问题可加入安卓QQ群: 246231638 ...

  3. 罗裳轻解,看C++怎样拥java入怀……

    // callJava.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h"#include <iostream> #include & ...

  4. 2021-11-10----韩顺平Java入门第七天

    韩顺平Java入门第七天 1.标识符     标识符的概念         ①java对各种变量.方法和类等命名是使用的字符序列称为标识符.         ②凡是自己可以起名字的地方都叫标识符 in ...

  5. 2021-11-16----韩顺平Java入门第十天

    韩顺平Java入门第十天 1.swith分支结构     基本语法     流程图     快速入门 //请编写一个程序,该程序可以接收一个字符, //比如:a,b,c,d,e,f,g a 表示星期一 ...

  6. SpringMVC自动将请求参数和入参对象的属性进行一一绑定;要求请求参数的名字和javaBean入参的对象里面的属性名是一样的||员工的增删改查案例

    SpringMVC自动将请求参数和入参对象的属性进行一一绑定:要求请求参数的名字和javaBean入参的对象里面的属性名是一样的 1.SpringMVC中配置HiddenHttpMethodFilte ...

  7. Java中类、常量、变量、方法名等命名规则

    Java中类.常量.变量.方法名等命名规则 命名规则: 命名由字母.数字.下划线.美元符号($)构成. 命名不可以数字作为开头. 长度无限制,但不可存在空格. 大小写所表述内容含义不同. 命名不可与J ...

  8. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 1 pa ...

  9. java中遍历实体类,获取属性名和属性值

    方式一(实体类): //java中遍历实体类,获取属性名和属性值public static void testReflect(Object model) throws Exception{for (F ...

最新文章

  1. 一文详尽系列之K-means算法
  2. Linux命令备忘录: jobs 显示Linux中的任务列表及任务状态命令
  3. Lesson 16.6Lesson 16.6 复现经典架构:LeNet5 复现经典架构 (2):AlexNet
  4. vector相关习题
  5. 【译】Understanding Universal Composition Framework and Sprites State Channels
  6. Android软键盘弹出时,覆盖布局,不是把布局顶上去的解决方法
  7. 安装ipython失败 in error catcher_疯狂的Python:零基础小白入门帖子详情 - 网易云课堂...
  8. javascript base64加密解密
  9. poi 拆分带图片的word_POI导出简单的带有图片的Word文档
  10. IT服务器台账系统,it项目管理信息系统
  11. 天池大数据竞赛-河北高校邀请赛——二手车交易价格预测-初赛第22名
  12. 如何使用pr制作视频人物运动残影特效
  13. 如何在Debian系统下搭建SVN
  14. Storm入门与实践(3)通过WordCount展开Storm的编程之旅
  15. 电脑连接移动设备android驱动程序,安卓手机连接电脑操作最简单的方法介绍
  16. html help文档制作,HTML Help Workshop(文件制作工具)
  17. Chrome浏览器默认打开无痕模式
  18. [读书笔记] Deep learning by Yann LeCun1,2, Yoshua Bengio3 Geoffrey Hinton4,5 on nature
  19. 哈工大信息内容安全实验
  20. mt4下载和安装好后如何使用呢

热门文章

  1. br标签之不同浏览器
  2. 机智云支持的wifi模组,Gagent模组
  3. 为什么大厂都在抢应届生,应届生比老员工更吃香?
  4. 贝塞尔函数matlab代码
  5. 全面解析:时延扩展与相干带宽、多普勒扩展与相干时间——无线通信基础
  6. js 金额大写转换函数
  7. HT1382时钟芯片代码
  8. 02引言-AngularJS基础教程
  9. 传iPhone5和iPhone4s将同时发布
  10. 命令模式在游戏开发中的应用