面试题-谈谈你对JVM的理解
首先问一个问题,jvm、jdk、jre三者的区别?再去谈其他的
- JVM(Java Virtual Machine):虚拟机 ,源文件.java在虚拟机中通过编译器编译成字节码文件.class,是整个java实现跨平台的最核心的部分 操作系统
- JRE(java Runtime Environment):即java运行环境,作用是运行别人写好的程序(JRE并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。) 运行环境
- JDK(Java Development Kit):开发工具即很多开发时使用到的工具如javac.exe编译工具和java.exe执行工具。我们可以到JDK目录下的bin目录下找到它,它的名称为:javac.exe 开发工具
三者的关系是JDK包含JRE包含JVM,Java运行步骤:源码—>javac编译器—>字节码文件—Java解释器—>机器码文件。
jvm的作用是将字节码文件解释为机器码文件。
源码通过javac编译器转化为字节码文件,字节码文件是一样的。不一样的是jvm,针对不同的系统有不同的 jvm 实现。
JVM的全称是叫Java虚拟机,看下面一张图
从这张图中看出,JVM所处的位置以及他有两个作用。
第一个作用:运行并管理Java源码文件,所生成的class文件;
第二个作用:在不同的操作系统上,安装不同的JVM,从而去实现跨平台的保障
JVM是运行在操作系统上的
解释名词
程序计数器
程序计数器是一块较小的内存区域,作用可以看作是当前线程执行的字节码的位置指示器。每条线程都有一个独立的的程序计数器,各线程间的计数器互不影响,因此该区域是线程私有的.分支、循环、跳转、异常处理和线程恢复等基础功能都需要依赖于这个计算器来完成。
方法区
与堆一样,是被线程共享的区域。在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。
Java 栈
栈也叫栈内存,主管 Java 程序的运行,是在线程创建时创建,它的生命周期是跟随线程的声明周期,线程结束栈内存也就释放了,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就 Over,生命周期和线程一致,是线程私有的。8 种基本类型的变量 + 对象的应用变量 + 实例方法都是在函数的栈内存中分配
栈存储什么?
栈帧中主要保存 3 类数据:
- 本地变量(Local Variables):输入参数和输出参数以及方法内的变量
- 栈操作(Operand Stack):记录出栈、入栈的操作
- 栈帧数据(Frame Data):包括类文件、方法等
Heap 堆
Java中的堆是用来存储对象本身的以及数组(数组引用是存放在Java栈中的)。堆是被所有线程共享的,在JVM中只有一个堆
堆内存分为三个部分
- Young Generation Space 新生区 Young / New
- Tenure Generation Space 老年区 Old / Tenure
- Permanent Space 永久区 Perm
面试题-谈谈你对JVM的理解相关推荐
- 集合面试题(谈谈你对集合的理解?)
目录 1.Collection 与Collections的区别 2.Collection下的接口: 1. List 元素有序,可重复. 实现类的区别如下: 1.ArrayList 2.LinkedLi ...
- 每天一道面试题-谈谈对面向对象思想的理解
这个问题,通常会让很多人有点不知所措,感觉我一直在编码,但是说到思想很难去阐述. 下面,我说说自己的想法, 首先,谈谈"面向过程"vs"面向对象" 我觉得这两者 ...
- 面试题谈谈你对spring的理解
1.spring为什么出现. spring的出现是为了解耦,我们在学习java初期,相信很多小伙伴都使用的是JSP+Servlet+MySQL+JDBC技术,在操作dao层的时候,每次都需要实例化一次 ...
- jvm对于java的意义_谈谈对JVM的理解
JVM可谓是学习JAVA基础中的基础了,但仍有不少同学对JVM概念还是比较模糊,甚至没有听说过,对java的理解也只是在基础语法 层面,本文就将对JVM进行初步介绍,因篇幅所限,只能介绍JVM基础,如 ...
- JVM面试1 :谈谈你对Java的理解
谈谈你对Java的理解 如何查看字节码? 使用 javap
- 从一道面试题谈谈一线大厂码农应该具备的基本能力
作者:Yura Shevchenko 来源:skypixel.com 关于一线码农的面试,我想说 求职面试在绝大部分人来说都是必不可少的,自己作为求职者也参与了不少面试(无论成功或者失败),作为技术面 ...
- java面试题jvm_经典面试题|讲一讲JVM的组成
经典面试题|讲一讲JVM的组成 发布时间:2019-04-10 09:01, 浏览次数:1456 , 标签: JVM JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一 ...
- 谈谈你对Java的理解
谈谈你对Java的理解 这个考察的很宽泛,答案不是唯一的,往往考察多个方面,其实这个问题考察的是你是否真的掌握了Java,对基础知识点的理解是否真的很清楚.是否掌握主要的模块和运行 原理等,同时也会对 ...
- 谈谈你对java的理解,java是“解释执行”这句话对吗?
谈谈你对java的理解,java是"解释执行"这句话对吗? 先科普下什么是"解释执行"? 什么是"编译执行"? • 解释执行 解释执行时高级 ...
最新文章
- 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他...
- Java虚拟机new和newarray相关指令学习
- SAP Commerce Cloud 新一代 UI Spartacus 和 Customer Data cloud 的集成
- Android之EditText自定义边框和边框颜色(转载)
- python爬虫中文乱码_Python爬虫处理抓取数据中文乱码问题
- ios开发之--调整UISearchBar的输入框的背景颜色
- 前端面试题大集合:来自真实大厂的532道面试题(只有题,没有答案)
- 理解委托是类型安全的
- 看门狗计算机丢失xinput13.dll,windows10系统打开程序提示丢失xinput13dll怎么办
- Kali学习 | 权限提升:5.3 社工SET_启动
- vue基础----用vue来展示表格数据
- opencv for android(三):使用opencv摄像头竖屏和前后切换
- treetable怎么带参数_Layui实现TreeTable(树形数据表格)
- 鼠标滑轮成了页面缩放的解决方法
- 初学乍练redis:分片与集群
- 关于微信手机确认登录问题
- python笔记一:海龟画图
- Matlab Deep Network Designer APP搭建神经网络及相关函数讲解
- Chrome版本与chromedriver兼容版本对照表
- 数据结构|考试大纲知识点梳理--自考课程代码02331 (2012年版)|计算机及应用(本科段)