面试题06 jvm原理

本文详细介绍了Java虚拟机(JVM)的工作原理,包括其标准与实现(如Hotspot),如何运行Class文件实现跨平台,JMM内存管理的作用,以及不同垃圾回收器(如G1)的工作机制,特别关注了JVM内存结构和执行流程。
摘要由CSDN通过智能技术生成

1.jvm是什么

首先,jvm是一种标准,实现是由各大厂商实现,主要是sum和oracle开发,目前主主流的是Hotspot虚拟机,jvm用虚拟机的意义就是它可以跨平台。

2.jvm怎么运行的

那么,虚拟机的运行过程是怎么样的呢?如下图,jvm从磁盘上读取出已经编译好的Class files字节码文件。

然后jvm通过Class loader这个类装载器子系统把前面的字节码文件加载上来,不同的字节码文件会有对应不同的类装载器。

类装载器然后将字节码文件加载到运行时数据区中,将字节码文件读取分析后生成一系列对象,类装载器通过方法区将字节码文件从磁盘加载到内存中,接下来分解这个方法所用到的基础数据类型到栈中,将这个方法new的对象到堆中。我们在运行时数据区中还有个本地方法栈,它会调用我们当前运行时机器本地的接口,如id地址、访问网络、访问磁盘等等。运行时数据区中还有一个程序计数器,这是在多线程中与线程绑定的,那还有我们栈也是和线程绑定的,在这中有很多栈针,将栈针压成一组栈,这个栈会跟线程一起消失,所以这个栈是不需要垃圾回收的

3.jmm内存管理

jmm也是jvm的一部分,它是管理jvm的内存访问,我们Java对于内存的访问是Java虚拟出来的内存空间中,但实际上是在操作系统的物理内存中的,所以jmm就帮我们规定了一套jvm到物理内存之间的映射关系的标准或方式

4.垃圾回收器

我们在new对象的时候会在新生代中产生很多垃圾,这里面垃圾可以使用我们之前讲过的复制清除算法,但老年代中的数据常年积攒,满的时候就触发g1操作,但是老年代的心理是非常慢的,在这个清理的过程会产生stw操作,产生这个操作会除了清理垃圾的线程之外的线程全部暂停,所以我们要尽量减少这段时间,g1就可以解决这些问题,通过可达性算法可知查找是非常缓慢的,所以我们将查找和用户线程并行,这样的时候我们就只用stw一段时间用来删除这些找到的垃圾

所以关键点:
1.jvm标准与实现
2.解决了跨平台问题
3.JMM内存管理
4.JVM模型
5.不同的垃圾回收器

答案:jvm是java虚拟机,我们的class文件运行在虚拟机上,通过虚拟机解决了跨平台的问题,jvm中有jmm来管理java内存访问的方式,不同的jvm实现性能上有差异,现在主流的实现是Hotspot,垃圾回收器是G1,jvm运行时内存中分为方法区,堆,栈,本地方法栈,执行代码时需要执行引擎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值