JVM面试题总结】的更多相关文章

前言 聊聊JVM,一个熟悉又陌生的名词,从认识Java的第一天起,我们就会听到这个名字,在参加工作的前一两年,面试的时候还会经常被问到JDK,JRE,JVM这三者的区别. JVM可以说和我们是老朋友了,但是在工作中的应用场景也许不如那些框架,但是在关键时候还是得靠它去搞定问题,俗话说得好,知己知彼,方能百战不殆,JVM作为前往高级工程师的一道坎,从这篇文章开始,我们会去逐步的分析,讲解,攻克这座大山. 有关Java虚拟机类加载机制相关的文章一搜一大把,就也不必再赘述一遍了.在这里捞出一道code…
作者:肥朝 原文链接:https://mp.weixin.qq.com/s/4wJ6ANal0blLOseasfIuVw 中学授课模式 考虑到可能有部分粉丝对JVM参数不清楚,所以我们参照中学的授课模式,给大家做一些知识上的普及.理论上,JVM参数主要分为三类 1.标配参数 该类型参数在JDK各个版本之间稳定,很少有大的变化.比如查看版本号 java -version   2.X参数 这些用的不多,看看就好. // 解释执行 -Xint // 第一次使用就编译成本地代码 -Xcomp // 混合…
JVM 面试题汇总 1.什么是 JVM?它有什么作用? 答:JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,顾名思义它是一个虚拟计算机,也是 Java 程序能够实现跨平台的基础.它的作用是加载 Java 程序,把字节码翻译成机器码再交由 CPU 执行的一个虚拟计算器. 2.JVM 主要组成部分有哪些? 答:JVM 主要组成部分如下: 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine)…
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去.这不他来了,一份详细的JVM面试真题给大家整理在下方了! 一.什么情况下会发生栈内存溢出? 1.栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表.操作数栈.动态链接.方法出口等信息,局部变量表又包括基本数据类型和对象的引用:2.当线程请求的栈深度超过了虚拟机允许的最大深度时,会抛出StackO…
常见JVM面试题及答案整理 1.什么情况下会发生栈内存溢出 2.JVM内存模型 3.JVM内存为什么要分成新生代,老年代,持久代.新生代中为什么要分为Eden和Survivor. 3.1共享内存区划分 3.2参数配置 3.3为什么要分为Eden和Survivor?为什么要设置两个Survivor区? 4.JVM中一次完整的GC流程是怎样的,对象如何晋升到老年代 5.你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms和G1,包括原理,流程,优缺点 5.1几种垃圾收集器 5.2CMS收集器和G1收…
文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪必备 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 +涨薪必备 免费领 疯狂创客圈 经典图书 : <SpringCloud.Nginx高并发核心编程> 面试必备 + 大厂必备…
转自:http://www.importnew.com/31126.html 本文从 JVM 结构入手,介绍了 Java 内存管理.对象创建.常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲解. 写在前面(常见面试题) 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String类和常量池 8种基本类型的包装类和常量池 1 概述 对于 Ja…
内存区域 虚拟机栈生命周期与线程相同,描述的是Java 方法执行的内存模型,每个方法在执行的时候都会创建一个栈帧,用于存取局部变量表.操作数栈.动态链接.方法出口等信息本地方法栈与虚拟机栈作用相似,只不过本地方法栈是为虚拟机使用到的Native方法服务程序计数器内存空间较小,可以看做是当前线程所执行的字节码的行号指示器.此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令…
目录 1.JVN内存结构 2.对象分配规则 3.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法 4.Perm Space中保存什么数据?会引起OutOfMemory吗? 5.什么是类的加载 6.如何⾃定义⼀个类加载器?你使⽤过哪些或者你在什么场景下需要⼀个⾃ 定义的类加载器吗? 7.描述一下JVM加载class文件的原理机制? 8.Java对象创建过程 9.类的生命周期 10.Java 中会存在内存泄漏吗,请简单描述. 11.GC是什么?为什么要有GC? 1…
肝了一篇非常硬核的 JVM 基础总结,写作不易,小伙伴们赶紧点赞.转发安排起来! 原文链接 据说看完这篇 JVM 要一小时 JVM 的主要作用是什么? JVM 就是 Java Virtual Machine(Java虚拟机)的缩写,JVM 屏蔽了与具体操作系统平台相关的信息,使 Java 程序只需生成在 Java 虚拟机上运行的目标代码 (字节码),就可以在不同的平台上运行. 请你描述一下 Java 的内存区域? JVM 在执行 Java 程序的过程中会把它管理的内存分为若干个不同的区域,这些组…
本文目录: 讲一下JVM内存结构? 程序计数器 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 Java对象的定位方式 说一下堆栈的区别? 什么情况下会发生栈溢出? 类文件结构 什么是类加载?类加载的过程? 什么是双亲委派模型? 为什么需要双亲委派模型? 什么是类加载器,类加载器有哪些? 类的实例化顺序? 如何判断一个对象是否存活? 可作为GC Roots的对象有哪些? 什么情况下类会被卸载? 强引用.软引用.弱引用.虚引用是什么,有什么区别? Minor GC 和 Full GC的区…
 1.虚拟机的类加载机制 1.1.什么是虚拟机的类加载机制 在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验.准备.解析.初始化,使这些数据          最 终成为可以被JVM直接使用的Java类型,这个说来简单但实际复杂的过程叫做JVM的类加载机制. 从二进制字节流从加载到内存,到卸载出内存过程中有7个生命周期阶段,而类加载机制包括前五个阶段 如下图所示: 其中,加载.验证…
新生代和老年代的区别(阿里面试官的题目): 所谓的新生代和老年代是针对于分代收集算法来定义的,新生代又分为Eden和Survivor两个区.加上老年代就这三个区.数据会首先分配到Eden区 当中(当然也有特殊情况,如果是大对象那么会直接放入到老年代(大对象是指需要大量连续内存空间的java对象).),当Eden没有足够空间的时候就会 触发jvm发起一次Minor GC.如果对象经过一次Minor GC还存活,并且又能被Survivor空间接受,那么将被移动到Survivor空 间当中.并将其年龄…
一.Java 类加载过程? Java 类加载需要经历以下7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成以下三件事情: • 通过一个类的全限定名获取该类的二进制流. • 将该二进制流中的静态存储结构转化为方法去运行时数据结构. • 在内存中生成该类的 Class 对象,作为该类的数据访问入口. 2. 验证 验证的目的是为了确保 Class 文件的字节流中的信息不会危害到虚拟机.在该阶段主要完成以下四种验证: • 文件格式验证:验证字节流是否符合 Class 文件的规范,如主…
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译.Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性. 2.Java内存结构? 方法区和对是所有线程共享的内存区域:而java栈.本地方法栈和程序员计数器是运行是线程私有的内存区域. Jav…
1.内存模型以及分区,需要详细到每个区放什么?2.堆里面的分区:Eden,survival (from+ to),老年代,各自的特点?3.对象创建方法,对象的内存分配,对象的访问定位?4.GC 的两种判定方法?5.SafePoint 是什么?6.GC 的三种收集方法:标记清除.标记整理.复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?7.GC 收集器有哪些?CMS 收集器与 G1 收集器的特点?8.Minor GC 与 Full GC 分别在什么时候发生?9.几种常用的…
1.介绍下 Java 内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域. JDK 1.8之前主要分为:堆.方法区.虚拟机栈.本地方法栈.程序计数器.其中堆和方法区是线程共享的,虚拟机栈.本地方法栈.程序计数器是线程私有的. JDK 1.8 的时候,方法区(HotSpot的永久代)被彻底移除了,取而代之是元空间,元空间使用的是直接内存. 程序计数器: 可以看做是当前线程所执行的字节码的行号指示器.字节码解释器工作时通过改变这个计数器…
前言 关于JVM系列面试知识点总结了一个思维导图,分享给大家 1.java中会存在内存泄漏吗,请简单描述. 会.自己实现堆载的数据结构时有可能会出现内存泄露. 2.64 位 JVM 中,int 的长度是多数? Java 中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位.意思就是说,在 32 位 和 64 位 的 Java 虚拟机中,int 类型的长度是相同的. 3.Serial 与 Parallel GC 之间的不同之处? Serial 与 Parallel 在 GC 执行的时…
Java 内存分配 • 寄存器:程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码.• 静态域:static 定义的静态成员.• 常量池:编译时被确定并保存在 .class 文件中的(final)常量值和一些文本修饰的符号引用(类和接口的全限定名,字段的名称和描述符,方法和名称和描述符). • 非 RAM 存储:硬盘等永久存储空间.• 堆内存:new 创建的对象和数组,由 Java 虚拟机自动垃圾回收器管理,存取速度慢.• 栈内存:基本类型的变量和对象的引用变量(堆内存空间的访问地…
1.讲一讲JVM的跨平台与跨语言 跨平台 我们写的一个类,在不同的操作系统上(Linux.windows.Mac OS)执行,效果是一样的.这就是JVM的跨平台性. 跨语言 JVM只识别字节码,JVM不是翻译Java文件,而是识别class文件,把它编译成字节码在JVM上跑.这就是JVM的跨语言特征. 2.什么是JVM.与JDK有什么区别 JVM(Java虚拟机)+ Java标准开发库 = JRE (JAVA的运行时环境) JRE (JAVA的运行时环境) + 开发调试诊断工具 = JDK 总结…
有关Java虚拟机类加载机制相关的文章一搜一大把,笔者这里也不必再赘述一遍了. 笔者这里捞出一道code题要各位大佬来把玩把玩,如果你一眼就看出了端倪,那么恭喜你,你可以下山了: public class StaticTest {    public static void main(String[] args)    {        staticFunction();    }    static StaticTest st = new StaticTest();    static    …
一. Java 类加载过程? Java 类加载需要经历一下 7 个过程: 1. 加载 加载是类加载的第一个过程,在这个阶段,将完成一下三件事情: • 通过一个类的全限定名获取该类的二进制流. • 将该二进制流中的静态存储结构转化为方法去运行时数据结构. • 在内存中生成该类的 Class 对象,作为该类的数据访问入口. 2. 验证 验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证: • 文件格式验证:验证字节流是否符合 Class 文件的规范,…
前言 对于大厂面试,我想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来.另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多. JVM面试题 java中会存在内存泄漏吗,请简单描述. 会.自己实现堆载的数据结构时有可能会出现内存泄露,可参看effective java. 64 位 JVM 中,int 的长度是多数? Java 中,int 类型变量的长度是一…
匠心零度 转载请注明原创出处,谢谢! 说在前面 如果你经常注意面试题,你会发现现在面试题多多少少会含有jvm相关的面试题,之前也把一些jvm面试题汇总了下:面试题系列一,那么为什么现在面试需要了解或者问面试题呢? 主题 谈谈自己的理解,概括为以下几个方面: 的确很重要. 供大于求. 面试风气. 下面就针对这几点谈谈. 的确很重要 随着互联网的发展,高并发高可用.快速响应成为软件的必须,而JVM与这些有着密切关联.之前JVM系列好多都是一些由于SWT影响到快速响应问题,忽然网站慢一下(抖动下)等问…
前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记.现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书. 学习JVM的目的也很简单: 能够知道JVM是什么,为我们干了什么,具体是怎么干的.能够理解到一些初学时不懂的东西 在面试的时候有谈资 能装逼 (图片来源:https://zhuanlan.zhihu.com/p/25511795,侵删) 声明:全文默认指的是HotSpot VM 一.简单聊聊JVM 1.1先来看看简单的Java程序 现在我有一个JavaBe…
前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记.现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书. 学习JVM的目的也很简单: 能够知道JVM是什么,为我们干了什么,具体是怎么干的.能够理解到一些初学时不懂的东西 在面试的时候有谈资 能装逼 声明:全文默认指的是HotSpot VM 一.简单聊聊JVM 1.1先来看看简单的Java程序 现在我有一个JavaBean:       public class Java3y {           // 姓名…
马上又是一个金九银十的招聘旺季,小编在这里给大家整理了一套各大互联网公司面试都喜欢问的一些问题或者一些出场率很高的Java面试题,给在校招或者社招路上的你一臂之力. 首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同级别下要找比自己优秀的人,面试是一个双向选择的过程,也是一个将心比心去沟通的过程. 就像我们有的人感觉自己很牛逼,但是拿不到offer,而其他的人菜的一笔,却可以拿到offer,我们称之为玄学offer,遇到这种情况大家也不要感觉到有什么不可描述的心情,一切随…
JVM(Java虚拟机)简单来说就是运行Java代码的解释器,作为螺丝钉程序员JVM其实了解下就差不多啦,不懂JVM内部细节照样能写出优质的代码!但是一到造火箭.飞机的场景(面试)不懂JVM的你,会被面试官虐的体无完肤,本期内容列举常见的JVM面试题: 说一JVM的内存模型是什么样子的? 什么时候对象可以被收回? 常见的垃圾回收器算法有哪些,各有什么优劣? 什么时候对象会进入老年代? 什么是空间分配担保策略? 如何优化减少Full GC? 面对这一大波JVM面试题,你真的Hold住吗? JVM的…
来源:老码农 ,lingsui.github.io/2018/03/30/JVM面试题/   1.你知道哪些或者你们线上使⽤什么GC策略?它有什么优势,适⽤于什么场景? 参考 触发JVM进行Full GC的情况及应对策略. https://blog.csdn.net/chenleixing/article/details/46706039/ 2.Java类加载器包括⼏种?它们之间的⽗⼦关系是怎么样的?双亲委派机制是什么意思?有什么好处? 启动Bootstrap类加载.扩展Extension类加载…
本文大量参考:https://www.cnblogs.com/lfs2640666960/p/9297176.html 概述 JVM是JRE的一部分.它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.JVM有自己完善的硬件架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.Java语言最重要的特点就是跨平台运行.使用JVM就是为了支持与操作系统无关,实现跨平台.所以,JAVA虚拟机JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE(当然也可以单独安装J…