JVM(java虚拟机)的相关知识

JVM有多重要?
1.所有Java的技术问题,都可以追溯到JVM内部
2.Java程序员水平,就看对JVM了解的程度

什么是java
1.作为世界上最流行的编程语言,java可以编写C/S、B/S模式的软件,语法
有Java Language Specification来规定(重点理解的概念

2.作为一个开发平台,以JVM为基础,除java外还有Groovy,Scala等语言,
虚拟机内部机制由Java Virtual Machine Specification规定

3.作为一种文化,Java几乎成为“开源”的代名词

JVM的概念、作用、内部结构
1.先启动一个Java虚拟机,然后再把要运行的类运行起来
(注意:JVM与Java应用程序:1:1JDK与JDK的关系)

虚拟机->物理机 等同于抽象的计算机
(JVM进程来模拟出来,用来解释、执行java class)
exe文件中,是CPU可以直接执行的命令
class文件中,是抽象的指令(字节码)

JVM的作用
JVM两个主要的作用:
1.跨平台
老的语言是无法跨平台的,例如:C语言,汇编语言

2.自动化的内存管理
rt.jar包含java语言的核心类库(核心API)
内部结构
JVM(java虚拟机)的相关知识
JNI技术,Java调用C语言等其他语言开发的函数

JVM方法区
JVM(java虚拟机)的相关知识

类加载器的分工
引导类加载器:加载核心类库
扩展类加载器:扩展类库(引导类加载器的子类)
系统类加载器:自身写的java类(开发人员编写的类加载器)【特殊情况下自定义新的类加载器】

垃圾回收
如何发现垃圾JVM(java虚拟机)的相关知识
GC几个步骤:
1.判定一个垃圾:
引用计数
根搜索法

2.清理垃圾
标记-清除法(存在内存碎片,利用率不高)
分段复制法(大量的对象移动,导致JVM卡顿)
标记-整理算法(碎片少,对比上两种方法折中方案)

JVM内存参数
1.调整堆内存大小:-Xms256M ,-Xmx512M

2.调整栈内存大小: -Xss2048k

3.调整方法去大小: -XX:MetaspaceSize=64M
-XX:MaxMetaspaceSize=128M