java虚拟机(JVM)知识点一
前言
什么JVM很重要:
1、任何Java的技术问题,都可以追溯到JVM
2、衡量Java技术员的水平,就是看懂多少JVM知识
一、什么是JVM?
1、语言
作为世界上最流行的编程语言,Java可以编写C/S、B/S模式的软件。语法由Java Language Specification 规定。
2、平台
作为一个开发平台,以JVM为基础,除了Java外还有Groovy,Scala,Kotlin,JRuby,Clojure,Jython等语言。虚拟机内部机制由Java Virtual Machine Specification规定。
3、文化
作为一种文化,Java几乎成为可以“开源”的代名词,后面出现的语言等,基本上都是“开源的”,Java开了“开源”的”先河”。
4、生态
作为生态,Java拥有世界最多的技术拥护者和开源社区的支持。从桌面应用软件、嵌入式开发到企业级应用、后台服务、中间件都可以看到Java的身影。
二、JVM的概念、作用
1、JVM的概念
对于Java程序来说,JVM就是操作系统
对于操作系统来说,JVM就是一个应用程序
2、JVM的作用
2.1、跨平台(不同的操作系统)
Java为什么能跨平台:
1)java文件编译后产生的字节码class文件,其中的指令是抽象的,可以重写该指令。
2)官方针对主流的操作系统,各自提供了不同JVM版本(jdk),运行的时候翻译成相同的CPU的机器指令。
2.2、自动内存管理(垃圾回收)
3、JVM怎么启动的?
- 执行JVM启动器 JAVA_HOME/bin/java.exe
(1)jvm.dll检查os、获取JVM参数
(2)根据vm参数向os申请分配内存、创建线程等。 - 启动器加载 JAVA_HOME/jre/bin/server/jvm.dll
- BootstrapClassloader加载 JAVA_HOME/jre/lib/rt.jar等核心类库
- 启动main线程,加载main方法Java类
(1)启动器退出,虚拟机初始化完成。 - Java main方法开始执行
1、dll文件是Windows系统的动态链接库(C语言写的一些函数库)
2、rt.jar是Java语言的核心类库
3、虚拟机栈的特点:先进后出