JVM常见面试题及详解

目录

一、JVM的概念

1、JVM的具体作用

2、JVM中内存区域的划分

3、常见的面试问题

二、动态内存管理器(GC)

1、GC的具体作用

2、GC回收的特点

3、标记

1)引用计数法

2)可达性分析

3)方法区类对象的回收规则

4、引用的类型

5、回收

1)标记清除

2)标记复制

3)标记整理

6、分代回收

7、垃圾回收器的介绍

三、类加载器

1、类加载的基本过程

2、什么时候触发类加载

3、常见的类加载器

4、双亲委派模型


一、JVM的概念

1、JVM的具体作用

jvm是什么?

jvm是java虚拟机Java Virtual Machine的缩写。

什么是java虚拟机?

虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。简单来说JVM是用来解析和运行Java程序的。

java虚拟机的好处?

java可以跨平台运行最主要的原因就是因为有java虚拟机,同时jvm可以屏蔽系统差异发明一些新的语言就可以使用jvm来完成。这样就做到了《一次编译到处运行》的特点。

2、JVM中内存区域的划分

要想知道JVM中内存区域的划分,拿首先就要知道JVM中的内存区域从什么地方来,JVM中的内存是JVM向操作系统中申请一块内存,在针对这个内存划分一个区域。

堆(运行时常量池) new的对象就会放在堆中
方法区 加载好的类放在方法区,静态成员
栈(JVM栈和本地方法栈) 局部变量
程序计数器

存储的是地址描述的是当前线程接下来

要执行的指令在什么地方

 注意:一个进程中存在多个线程,每个线程中都存在自己的栈和程序程序计数器,一个进程中共用一个堆和一个方法区。

判断一个变量是在堆上还是在栈上,和这个变量是基础类型还是引用类型没有关系,和这个变量是局部变量、静态变量还是成员变量有关。

3、常见的面试问题

1)如何理解基础数据类型还是引用数据类型

基础数据类型中对应的内存空间储存的是具体的值

引用数据类型中对应的内存空间存储的是new对象的地址

2)如何理解引用和对象

引用还是存储的是地址,new对象是本体。

3)如何理解局部变量成员变量以及静态变量

成员变量在堆上

局部变量在栈上

静态变量在方法区中

public class Test01 {
    //成员变量
    Test01 t1=new Test01();
    //静态变量
    static Test01 t2=new Test01();
    public static void main(String[] args) {
        //局部变量
        Test01 t3=new Test01();
    }
}

 

 

4)递归的执行过程

<
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

now just do it

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值