JVM的核心内容

1.JVM对于java程序员的重要性可以用一下两句话来概述

	1.1 关于任何java的技术问题都可以追溯到java虚拟机里面去
	1.2 一个Java程序员水平的高低就看你对Java虚拟机这个东西有多了解

2.了解JVM需要先理解jdk与jre的关系

	2.1 jdk是开发工具包
	2.2 jre是程序运行时的环境
	2.3 JVM与java应用程序是一对一的关系

3.JVM的作用

	3.1 跨平台
		3.1.1 java通过编译成抽象的指令(java字节码),用不同版本的java虚拟机来实现运行时的解释(如下图所示)
		3.1.2 Java字节码=抽象的指令
		3.1.3 JVM负责编译抽象的指令
		3.1.4 编程语言运行时都是要靠调用windos操作系统底层的函数才能实现
		3.1.5 JVM内部里面有一个JIT解释器,这个JIT解释器碰到一个字节码就把他翻译成一个能让操作系统识别的机械码,就是用来存放热点代码,也就是做缓存用的,用来提高程序运行的效率
		
	3.2 自动内存管理
		3.2.1 java虚拟机里面有一个垃圾回收器
		3.2.2 垃圾回收器回收的是不被任何引用的对象占据的内存空间,而不是对象本身

在这里插入图片描述

4.JVM怎么启动的

	4.1 java.exe------>2.jvm.dll------>3.rt.jar------>4.自己编写的main()
		java.exe:程序入口
		.dll Dynamic Link library动态链接库,一般用C语言开发的
		jvm.dll(虚拟机本身) 负责向我们的操作系统去申请,我要产生一个新的进程,
		你操作系统要给我分配一些内存,所以当加载到jvm.dll的时候,
		意味着虚拟机开始在操作系统上面产生一个进程了,
		虚拟机的内存空间他就有了
		
		rt.jar (核心类库)

5.JVM的总体架构

5.1 你对下面这张图有一定的了解了,你就对JVM内部有一定的了解了

在这里插入图片描述
类加载器:就是负责把class文件里面的类装载到方法区里面去
方法区(Method Area):是系统分配的一个内存逻辑区域,是JVM装载类文件时,用于储类型信息的(类的描述信息)
堆(Heap):用于存放有new创建的对象和数组,在堆中分配的内存,由java虚拟机自动垃圾回收器来管理
虚拟机栈:(VM Stack):线程工作的地方(线程的办公桌)
栈:线程执行代码的地方,它的特点是先进后出,与它相反的是队列(先进先出)
程序计数器(:Program Counter Register):用来记录线程工作的日志(秘书)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值