最近看了一段时间jdk源码,在看源码的过程中对数据的存储不是很清楚,当时就在想数据到底存在哪里去了?以前只是看博客什么的对jvm有一个大概的了解,但是没有深入研究。经过一段时间的研究<<深入理解java虚拟机后>>,才决定写一些关于jvm的文章,不为别的只为了同为技术的程序员们少走一些弯路,因为这本书第一遍读起来晦涩难懂,我也是查阅了大量的资料才渐渐的理解了什么意思。同时也为了留下自己的脚印,以后几十年后能够看到我在这一年没有荒废时间还在努力的研究技术,估计那时候会欣慰的一笑吧。
1 jvm怎么来的
还记得上的java第一趟课吗?老师怎么说的。。。java是面向对象的语言,而且它是跨平台的。这个跨平台是什么意思?
我们的计算机只认识0 或者 1,我们不管用什么语言写的程序都要经过编译器编译成 0 或者1 组成的2机制文件才能被机器认识,程序才能执行。现在也是这样子,但是我们的程序是运行在机器上,机器是有操作系统的也是有机器指令的,面对不同的厂家不同操作系统我们都需要根据具体的需求 进行编译,这样子做了太多的重复性工作。所以‘与平台无关性’这一理想就出现了,在这种理想下虚拟机也就应运而生。
而且虚拟机跟java一点关系都没有,只不过java是在虚拟机上运行而已。更准确的说任何语言之言编译成.class文件都能在虚拟机上运行。

不管什么语言只要编译成class文件,都能做到一次编译处处运行。

1 jvm是什么?
我想大家学java的时候第一课一定是伟大的helloword.java对吧。那么我们怎么执行的这个helloword.java文件让他运行的呢?
1首先我们javac helloword.java

编译好了 生成一个.class文件。
2 我们需要按照说明执行java helloword

果然按照我们设想的打印出了HelloWord,第一次执行程序的时候有没有兴奋呢?那么我们现在在回顾看一下它是怎么运行的。我们知道执行的命令是java 这是java是一个包装好的命令,这个命令执行了就是启动一个jvm虚拟机。然而启动虚拟机是不够的。因为jvm不知道我该运行什么。所以要有一个系统来吧本地的.class里面的2进制文件加载进虚拟机中。吧文件加载进来我需要开辟一个地方来存放这些东西吧。吧东西存放了呢?jvm需要知道 你到底让我干什么啊。这时候就需要解析文件,既然虚拟机可以使用了,那么按照程序所写的执行完了。东西岂不是还存在‘一个地方‘中,那么长久下来机器还不撑爆了,所以需要定时吧不用的都删除,以保证内存。通俗来讲这就是虚拟机做的事情。
‘加载进虚拟机’- –类加载器子系统
’一个地方‘ --- 运行时数据区域(堆 栈)
’解析文件‘---- 执行引擎子系统
’定时删除‘----垃圾收集子系统
以上就是jvm的基本东西,他们算在一起才叫jvm。
这里有一个比较有意思的比喻。
大家都经常吃饭。下面我描述下吃饭的过程。
吃饭的时候,饭不会自己跑到嘴里,
所以 ‘类加载器子系统’负责吧饭送到你的嘴中,
经过咀嚼 饭到了胃里,也就是‘运行时数据区域(堆 栈)’中存着,
经过肠胃 也就是‘ 执行引擎子系统’的消化,
我们吸收营养来做日常的开销,消化完了产生了废物,
这时候就需要菊花也就是‘垃圾收集子系统’排出体外。
jvm就是不断的重复这些过程来执行程序,从而保证程序的正常运行。
jvm 就是这些东西的组合,这章就到这里,只是根据我自己的想法笼统的概括了jvm是什么。后面几章将会拆分各个系统深入了解jvm

jvm虚拟机-什么是jvm相关推荐

  1. java visualvm远程监控_深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutori ...

  2. java虚拟机内存监控_深入理解JVM虚拟机9:JVM监控工具与诊断实践

    本文转自: https://juejin.im/post/59e6c1f26fb9a0451c397a8c 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到 ...

  3. 深入理解JVM虚拟机13:JVM面试题,看这篇就足够了(87题详解)

    1.java中会存在内存泄漏吗,请简单描述. 会.自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java. 2.64 位 JVM 中,int 的长度是多数? Java 中,in ...

  4. java jvm垃圾回收算法_深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法

    本文转自互联网,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 喜欢的话麻烦点下Star哈 文章将同步到我的个人博客: www.how ...

  5. 深入理解JVM虚拟机2:JVM垃圾回收基本原理和算法

    JVM GC基本原理与GC算法 Java的内存分配与回收全部由JVM垃圾回收进程自动完成.与C语言不同,Java开发者不需要自己编写代码实现垃圾回收.这是Java深受大家欢迎的众多特性之一,能够帮助程 ...

  6. 深入理解JVM虚拟机10:JVM常用参数以及调优实践

    本文转自[JVM常用参数以及调优实践](https://blog.csdn.net/a724888/article/details/78367780) JVM常用参数选项 jvm 可配置的参数选项可以 ...

  7. 我所知道JVM虚拟机之聊聊JVM虚拟机

    一.介绍JVM跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序 ava虚拟机根本不关心运行在其内部的程序 ...

  8. 深入理解JVM虚拟机14:JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...

  9. java jvm虚拟机_Java虚拟机(JVM)简介

    java jvm虚拟机 什么是JVM Java虚拟机(JVM)是使计算机能够运行Java程序的抽象计算机. JVM有三个概念: 1.规格 2.实施 3.实例. 该规范是正式描述JVM实现要求的文档. ...

  10. JVM虚拟机知识点(保姆级教程)

    jvm虚拟机知识点 温馨提示:本章节阅读预计耗时>30分钟,请沏茶细品.如果描述不准确或者缺漏的地方,还请技术大大们指点迷津! 目录索引 文章目录 jvm虚拟机知识点 @[toc] JVM基础 ...

最新文章

  1. jupyter notebook中的魔法函数
  2. java弃用标签_Java 9 揭秘(15. 增强的弃用注解)
  3. 三合一剪弦器怎么用_三合一冲锋衣推荐选购攻略:
  4. DjangoForm组件初识
  5. 《一天搞懂深度学习》下载
  6. 大写日期转换器(大写日期转换器)
  7. 【图解算法】彻底搞懂(括号匹配)——图解带你直击本质
  8. 深度Linux声卡驱动安装,Deepin Linux 的声卡驱动有点小问题
  9. 删除的win10应用商店怎么恢复
  10. wampserver 的Apache启动错误提示:The requested URL / was not found on this server
  11. 【英语:发音基础】A1.元音与辅音
  12. 新手如何使用腾讯云云服务器详细教程
  13. 不能爬小程序,叫什么会爬虫
  14. 拉基米德米表系统源码含简易后台
  15. GitLab 无法显示头像的解决方法
  16. idea 2018.2破解激活
  17. 从技术宝库到云上机遇:华为云开天aPaaS的“修路记”
  18. 广西教师招聘需要计算机考试证,2020广西教师招聘报考需要有教师资格证吗
  19. 植物叶片——丙二醛MDA
  20. 如何搭建Rtmp服务结合uni-app开发直播APP

热门文章

  1. 电脑做照片视频的软件用哪个?3步制作高清照片视频,超多酷炫转场效果
  2. oracle直截取汉字,ORACLE_从字符串中提取汉字(不包括全角符及日文韩文等字符) | 学步园...
  3. LEDE嵌入式无线路由系统定制
  4. VisualSVN Server 安装等
  5. CGAN原理及tensorflow代码
  6. 15个Android流行框架
  7. 高质量程序设计指南C/C++阅读笔记
  8. Latex中参考文献的写作方法
  9. 韦伯望远镜拍摄图片震撼来袭!!
  10. WeChat Reader