JVM篇--Java内存区域高频面试题

java内存区域

1 Java 堆空间及 GC?

首先我们要知道java堆空间的产生过程: 即当通过java命令启动java进程的时候,就会为它分配内存,而分配内存的一部分就会用于创建堆空间,而当程序中创建对象的时候 就会从堆空间来分配内存,所以堆空间存放的主要是对象和数组;
而GC 其实说白了就是java虚拟机回收对象的机制,即回收无效对象的内存用于将来的分配。

2 JVM 的主要组成部分及其作用?

JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime data area(运行时数据区)、Native Interface(本地接口)。
那么他们分别有啥作用呢?
首先看Class loader:根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtime data area中的method area。其实说白了就是类加载器,简单点-作用就是通过类加载器将编译好的class文件加载到运行时数据区
Execution engine(执行引擎): 执行class中的指令
Native Interface(本地接口):与native libraries交互,是其它编程语言交互的接口。
Runtime data area(运行时数据区域):这就是我们常说的JVM的内存

整体的过程:首先会通过编译器把Java代码转换成字节码源文件,之后类加载器会把字节码文件加载到内存中,即加载到运行时数据区,
但是其实字节码文件只是JVM的一套指令集规范,并不能直接交给底层操作系统来去执行,因此需要特定的命令解析器即执行引擎,将字节码翻译成底层的系统指令,再交由CPU去执行
同时java代码中 可以调用其他语言的本地库接口,进行一些系统调用或者c函数的调用
在这里插入图片描述

3 说说JVM 运行时数据区? 或:说一下JVM内存模型?

jvm内存模型大致被划分为如下几个区域:
程序计数器:也就是当前线程所执行的字节码指令的行号指示器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值