首先问一个问题,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. 集合面试题(谈谈你对集合的理解?)

    目录 1.Collection 与Collections的区别 2.Collection下的接口: 1. List 元素有序,可重复. 实现类的区别如下: 1.ArrayList 2.LinkedLi ...

  2. 每天一道面试题-谈谈对面向对象思想的理解

    这个问题,通常会让很多人有点不知所措,感觉我一直在编码,但是说到思想很难去阐述. 下面,我说说自己的想法, 首先,谈谈"面向过程"vs"面向对象" 我觉得这两者 ...

  3. 面试题谈谈你对spring的理解

    1.spring为什么出现. spring的出现是为了解耦,我们在学习java初期,相信很多小伙伴都使用的是JSP+Servlet+MySQL+JDBC技术,在操作dao层的时候,每次都需要实例化一次 ...

  4. jvm对于java的意义_谈谈对JVM的理解

    JVM可谓是学习JAVA基础中的基础了,但仍有不少同学对JVM概念还是比较模糊,甚至没有听说过,对java的理解也只是在基础语法 层面,本文就将对JVM进行初步介绍,因篇幅所限,只能介绍JVM基础,如 ...

  5. JVM面试1 :谈谈你对Java的理解

    谈谈你对Java的理解 如何查看字节码? 使用 javap

  6. 从一道面试题谈谈一线大厂码农应该具备的基本能力

    作者:Yura Shevchenko 来源:skypixel.com 关于一线码农的面试,我想说 求职面试在绝大部分人来说都是必不可少的,自己作为求职者也参与了不少面试(无论成功或者失败),作为技术面 ...

  7. java面试题jvm_经典面试题|讲一讲JVM的组成

    经典面试题|讲一讲JVM的组成 发布时间:2019-04-10 09:01, 浏览次数:1456 , 标签: JVM JVM(Java 虚拟机)算是面试必问的问题的了,而但凡问 JVM 一定会问的第一 ...

  8. 谈谈你对Java的理解

    谈谈你对Java的理解 这个考察的很宽泛,答案不是唯一的,往往考察多个方面,其实这个问题考察的是你是否真的掌握了Java,对基础知识点的理解是否真的很清楚.是否掌握主要的模块和运行 原理等,同时也会对 ...

  9. 谈谈你对java的理解,java是“解释执行”这句话对吗?

    谈谈你对java的理解,java是"解释执行"这句话对吗? 先科普下什么是"解释执行"? 什么是"编译执行"? • 解释执行 解释执行时高级 ...

最新文章

  1. 嘿嘿,我就知道面试官接下来要问我 ConcurrentHashMap 底层原理了,看我怎么秀他...
  2. Java虚拟机new和newarray相关指令学习
  3. SAP Commerce Cloud 新一代 UI Spartacus 和 Customer Data cloud 的集成
  4. Android之EditText自定义边框和边框颜色(转载)
  5. python爬虫中文乱码_Python爬虫处理抓取数据中文乱码问题
  6. ios开发之--调整UISearchBar的输入框的背景颜色
  7. 前端面试题大集合:来自真实大厂的532道面试题(只有题,没有答案)
  8. 理解委托是类型安全的
  9. 看门狗计算机丢失xinput13.dll,windows10系统打开程序提示丢失xinput13dll怎么办
  10. Kali学习 | 权限提升:5.3 社工SET_启动
  11. vue基础----用vue来展示表格数据
  12. opencv for android(三):使用opencv摄像头竖屏和前后切换
  13. treetable怎么带参数_Layui实现TreeTable(树形数据表格)
  14. 鼠标滑轮成了页面缩放的解决方法
  15. 初学乍练redis:分片与集群
  16. 关于微信手机确认登录问题
  17. python笔记一:海龟画图
  18. Matlab Deep Network Designer APP搭建神经网络及相关函数讲解
  19. Chrome版本与chromedriver兼容版本对照表
  20. 数据结构|考试大纲知识点梳理--自考课程代码02331 (2012年版)|计算机及应用(本科段)

热门文章

  1. Python多路IO复用之select
  2. PCDViewer 3.2 Linux 版(Ubuntu)
  3. 《Mysql是怎样运行的》读书笔记之单表访问
  4. HTML中的超链接(a元素)用法详解
  5. Reflex WMS入门系列二十二:物料库存报表
  6. 2014Esri中国用户大会亮点系列之——ArcGIS平台能力
  7. 【pytest】2.pytest的前置、后置
  8. 033悟空打死沙悟净(键盘映射 )
  9. mtk LK流程简介
  10. GEE学习笔记:在Google Earth Engine(GEE)中计算坡度、坡向、山体阴影