前言 之前面试的时候被问到死锁这块的问题,借着最近学习jvm来总结下死锁相关的知识.如果有地方写的不到位的地方,麻烦读者及时提出,放在评论区,我这边也好及时改正. 回顾 所谓,温故而知新,首先回顾下,我们之前学过的线程的状态以及死锁产生的条件. 线程的状态在Java中线程的状态一共被分成6种:<ignore_js_op>初始态(NEW)创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态.运行态(RUNNABLE),在Java中,运行态包括 就绪态 和 运行态.就绪态该…
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去.这不他来了,一份详细的JVM面试真题给大家整理在下方了! 一.什么情况下会发生栈内存溢出? 1.栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表.操作数栈.动态链接.方法出口等信息,局部变量表又包括基本数据类型和对象的引用:2.当线程请求的栈深度超过了虚拟机允许的最大深度时,会抛出StackO…
文章很长而且持续更新,建议收藏起来,慢慢读! 高并发 发烧友社群:疯狂创客圈(总入口) 奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 极致经典 + 社群大片好评 < Java 高并发 三部曲 > 面试必备 + 大厂必备 + 涨薪必备 疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 大厂必备 +涨薪必备 免费领 疯狂创客圈 经典图书 : <SpringCloud.Nginx高并发核心编程> 面试必备 + 大厂必备…
前言 聊聊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面试题及答案整理 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 方法执行的内存模型,每个方法在执行的时候都会创建一个栈帧,用于存取局部变量表.操作数栈.动态链接.方法出口等信息本地方法栈与虚拟机栈作用相似,只不过本地方法栈是为虚拟机使用到的Native方法服务程序计数器内存空间较小,可以看做是当前线程所执行的字节码的行号指示器.此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令…
本文目录: 讲一下JVM内存结构? 程序计数器 虚拟机栈 本地方法栈 堆 方法区 运行时常量池 直接内存 Java对象的定位方式 说一下堆栈的区别? 什么情况下会发生栈溢出? 类文件结构 什么是类加载?类加载的过程? 什么是双亲委派模型? 为什么需要双亲委派模型? 什么是类加载器,类加载器有哪些? 类的实例化顺序? 如何判断一个对象是否存活? 可作为GC Roots的对象有哪些? 什么情况下类会被卸载? 强引用.软引用.弱引用.虚引用是什么,有什么区别? Minor GC 和 Full GC的区…
转自:http://www.importnew.com/31126.html 本文从 JVM 结构入手,介绍了 Java 内存管理.对象创建.常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲解. 写在前面(常见面试题) 基本问题 介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式) 拓展问题 String类和常量池 8种基本类型的包装类和常量池 1 概述 对于 Ja…