java面试每日三题(7)jvm

一、jvm内存结构

        1、程序计数器

                就是一个指针,它指向了方法区中的方法字节码(其实就是存了下一个指令的地址码)。

        2、java虚拟机栈

                java线程执行方法的内存模型,一个线程对应一个栈,每个方法在执行时都会在栈中创建一个栈帧,不存在垃圾回收问题,只要方法结束自然就会弹栈。

        3、本地方法栈

                和栈的作用很像,区别只是在于,本地方法栈是为jvm执行native方法服务的。

        4、堆

                jvm管理的最大一块内存区域,是线程共享的,用于存放对象的实例。也是gc垃圾回收重点的区域。

        5、方法区(jdk8后改为元数据区,常量池由堆管理)

                线程共享,用于存储已经被jvm加载的类信息,常量,静态变量等。

二、类加载

类加载是类从.java文件编译成.class文件之后,经过类装载器初始化的过程。

        双亲委派机制:首先委托父类加载器查询目标类,在找不到的情况下才会向下寻找。

三、什么是gc垃圾回收

内存空间是有限的,那么程序运行时及时的释放资源,就是gc要做的事。

在jvm中,程序计数器、虚拟机栈、本地方法栈的生命周期就是线程的生命周期,实现了内存的自动清理,所以gc垃圾回收机制主要集中在堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值