java虚拟机常见面试题整理
来源:互联网 发布:淘宝无线端链接转换 编辑:程序博客网 时间:2024/06/08 13:21
-1.JVM的内存模型
1)程序计数器:当前线程所执行的字节码的行号执行器。再多线程上下文切换中将非常有用。
上下文切换:保存到在加载的过程。可以理解为你看书看到第几页以后不看了,然后折了一下作为标志,下次就从这里开始看
2)java虚拟机栈:我们常说的栈就是java虚拟机栈,它是方法执行的内存模型。方法在执行时会创建一个栈帧,每个方法从调用到执行完成的过程,对应的栈帧的入栈和出栈。
栈帧:存储局部变量表、操作数栈、动态链接等。
局部变量表:存储基本类型、对象引用、returnAddress类型(指向字节码的指令)
3)本地方法栈:一些native方法吧
4)java堆:线程共享的一块内存区域,java堆是垃圾收集器管理的主要区域
5)方法区:类信息、常量、静态变量、即时编译器编译以后的代码的存储
6)运行时常量池:class文件中常量池的保存地方,主要保存的是类的版本、字段、方法、接口等描述信息
7)直接内存:
-2.垃圾回收的时候如何判断一个对象需要回收
判断一个对象是否需要回收,即判断是否存活,有两种算法。jvm采用的是第二种算法
1)引用计数算法
假设每个对象都有一个引入计数器,每当引用一个对象进行加1操作,不再引用时计数器减1。jvm没有使用这个算法,因为它存在对象之间互相引用的问题(主要是堆里面互相引用,而在栈里已经没有引用指向它了)
2)可达性分析算法
当一个对象到GCRoots不可达时,即没有引用链,则该对象是可回收的
继续追问:可以作为GC ROOTs的对象:
1)虚拟机栈(栈帧中的本地变量表)中引用的对象
2)方法区中类静态属性引用的对象
3)方法区中常量引用对象
4)本地方法栈中引用的对象
- java虚拟机常见面试题整理
- JAVA常见面试题整理
- Java 常见面试题整理
- java常见的面试题整理
- 常见面试题整理—java部分
- Java常见面试题整理【1】
- Java常见面试题整理【2】
- Java常见面试题整理【3】
- 常见面试题整理
- 【备忘录】常见面试题整理
- 常见Android面试题整理
- python 常见面试题整理
- 常见数据库面试题整理
- 前端常见面试题整理
- Java虚拟机面试题
- Java虚拟机面试题
- java常见笔试面试题总结(持续整理中)
- java程序员面试常见面试题及答案整理
- anaconda下安装opencv_python
- 1!+2!+...+n!的和
- bootstrap 实现轮播图
- HTML&CSS项目创建(页面练习)
- SQL 习题进阶 二
- java虚拟机常见面试题整理
- Jsp的学习笔记
- R语言-连接MySQL数据库方法
- 机器学习十大算法之KNN算法
- 百度地图api绘制热力图
- 数据挖掘学习之决策树算法PART2
- SimpleDateFormat非线程安全
- DMA
- 数据库应用相互通信