Hi,运维,你懂Java吗--No.4:JVM-概述

Posted 龙叔运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hi,运维,你懂Java吗--No.4:JVM-概述相关的知识,希望对你有一定的参考价值。

        作为运维,你不一定要会写Java代码,但是一定要懂Java在生产跑起来之后的各种机制。

        本文为《Hi,运维,你懂Java吗》系列文章 第四篇,敬请关注后续系列文章

        欢迎关注  龙叔运维(公众号)  持续分享运维经验

前言

        本篇对java的JVM进行初步的拆分讲解,希望大家可以有一个整体概念,JVM是java运维工作中很重要的点哦。

1、JVM组成

        JVM核心内容一共分为四大块:类加载器,运行时数据区,本地方法库接口,执行引擎

        而对运维来说最重要的就是要掌握运行时数据区。

2、类加载器

        类加载器的作用就是将class文件字节码内容加载到JVM的运行时数据区中。

        类加载器按照加载的内容来看可以分为:        

  • 启动类加载器(Bootstrap ClassLoader): 负责加载存放在 <JAVA_HOME>\\lib 目录中的核心类库,如rt.jar、resources.jar等(或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的类库)。这个加载器是 C++ 编写的,随着JVM启动。
  • 扩展类加载器(Extension ClassLoader): 负责加载<JAVA_HOME>\\lib\\ext 目录中的类库,(同样也可以用 java.ext.dirs 系统变量来指定路径)。
  • 应用程序类加载器(Application ClassLoader): 负责加载用户类路径 classpath 上所有的 jar 包和 .class 文件。
  • 自定义类加载器: 可以支持一些个性化的扩展功能。

3、运行时数据区

        对于运维来讲,运行时数据区是最需要掌握的知识点

        分为 方法区(元空间)、堆、虚拟机栈、本地方法栈、程序计数器

        这里不多讲,回单开章节详细讲解

4、本地方法库接口

        首先,什么是本地方法?

        一个Native Method 就是一个java调用非java代码的接口。该方法的实现由非java语言实现,比如C 。定义一个native method时,并不提供实现体,因为由非java实现。


        本地方法库接口的作用是融合不同的编程语言为java所用。

5、执行引擎

        类加载器只负责加载,而class文件是否可以执行,这里就要看执行引擎的了。

                执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。简单来说,JVM中的执行引擎充当了将高级语言翻译为机器语言的译者。

        执行引擎在执行的过程中究竟需要执行什么样的字节码指令完全依赖于JVM中的程序计数器。每当执行完一项指令操作后,程序计数器就会更新下一条需要被执行的指令地址。

————完

以上是关于Hi,运维,你懂Java吗--No.4:JVM-概述的主要内容,如果未能解决你的问题,请参考以下文章

Hi,运维,你懂Java吗--No.4:JVM-概述

Hi,运维,你懂Java吗--No.5:JVM--方法区&元空间

Hi,运维,你懂Java吗-No.1:初识Java

Hi,运维,你懂Java吗-No.1:初识Java

Hi,运维,你懂Java吗-No.1:初识Java

Hi,运维,你懂Java吗-No.3:java系统的启动