JVM面试必备
前言
最近打算换工作,想来复习习下jvm的知识,让自己的知识储备更加丰富,希望我们都能找到一个合适的工作,我会把jvm的知识都用一个图表示,然后根据每个图用我自己理解来给大家讲解一番,希望大家能够理解,本篇文章只适合面试吹泡泡,想要更深的理解还需要大家看更多的书籍,推荐周志明老师的深入理解Java虚拟机,想要pdf版的可以在评论下索要,我会以最快的时间发给你的
1.JVM体系结构概述
详解:这是jvm的体系结构图,大家可以多画几遍,面试的时候直接给面试官画上这幅图,这上面的每个名词的意思我都会详细的给大家讲明白。
2.类装载器
讲解:根据jvm的体系结构图我们可以知道,我们本地的Car.class文件,需要一个类装载器才可以加载到jvm的运行时数据
什么是java类加载器:Java运行时环境(Java Runtime Environment)的一部分,负责动态加载Java类到 Java虚拟机的内存空间中
下图的自定义类加载不打算介绍,如果需要自定义加载器,你已经很牛逼,不需要看我的博客了
根据这个图,我们可以看下下面这个代码
Public class Test{
Public static void main(String[] arg){
ClassLoader c = Test.class.getClassLoader(); //获取Test类的类加载器
System.out.println(c);
ClassLoader c1 = c.getParent(); //获取c这个类加载器的父类加载器
System.out.println(c1);
ClassLoader c2 = c1.getParent();//获取c1这个类加载器的父类加载器
System.out.println(c2);
}
}
//程序运行结果如下
……AppClassLoader…… //这个是应用程序类加载器
……ExtClassLoader…… //这个是扩展类加载器
Null //这个是bootstrap类加载器,c++实现的,逻辑上并不存在Bootstrap Load的类实体,所以为Null
这三个类的继承关系如下:
什么是双亲委派机制:简单的理解就是,类装载器有载入类的需求时,会先请示其Parent使用其搜索路径帮忙载入,如果Parent 找不到,那么才由自己依照自己的搜索路径搜索类(有啥事别找我,我爸是李刚)
什么是沙箱安全机制:就是一种安全机制,比如你建一个和java提供的的类一样的包名和类名,在编译器就会报错,其实很容易理解,比如你创建一个String类,根据双亲委派机制,会先找父亲,根据先到先占用的原则,这个String类已经被创建了,肯定就会报错啊(个人理解)
3.native
详解:jvm体系结构图中的程序计数器就是pc寄存器
详解:方法区是一个共享区域,存放,静态变量,常量,类信息(构造,接口定义),运行时常量池
智能推荐
Java集合面试必备
集合是Java的核心东西,应该是面试必问的东西,我下面就把集合常见的面试题来分享下 分享的过程中将会有很多知识点的穿插,不是很懂的可以百度,后续我还会一直跟进这篇博客的,我相信这些东西能够让你和面试官吹一个小时的。 1.ArrayList的源码分析: 1.1底层的数据结构:object数组 Java中transient关键字的作用,简单地说,就是让某些被修饰的成员属性变量不被序列化(...
[Python]IDEA搭建Python环境
>Python环境 首先,我们需要下载一定版本的Python。 Python版本主要分2.7和3.x两种选择,由于Python3中的部分语法和特性对比Python发生了改变,因此一些原有的库对3的支持不是那么好。 考虑到日后的方便,这里采用Python 2.7(64bit)。(64位的Python相比,没有32位Python内存上限为2G的局限。)当然,一般来说,我会同时安装Python3和...
问题: Error inflating class RecyclerView
问题: Error inflating class RecyclerView-2020-4-25 详细: 看到里面 com.example.index_school_07:layout/item_detaillist: Error inflating class android.support.v7.widget.RecyclerView 这里报错 解决 android.support.v7.wi...
异常数据处理——箱型图分析原理及Python例程
箱型图分析原理及Python例程 一、箱型图分析原理 箱型图可以通过程序设置一个识别异常值的标准,即大于或小于箱型图设定的上下界的数值则识别为异常值,箱型图如下图所示: 首先我们定义下上四分位和下四分位: 上四分位我们设为 U,表示的是所有样本中只有1/4的数值大于U ,即从大到小排序时U处于25%处; 同理,下四分位我们设为 L,表示的是所有样本中只有1/4的数值...
练习2 - 数字组合
结果:...
猜你喜欢
2019.3.11
2019.3.11...
面试题49. 把字符串转换为整数
面试题49. 把字符串转换为整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路: 对于输入的字符串,从后向前遍历,判断每一位...
Mysql入门——创建一个数据库
题目:创建一个教务管理数据库,名称为 JWGL 在 JWGL 数据库中创建学生表 Student、课程表 Course、学生选课表 SC,它们的表结构如下所示: 学生表Student 列名 数据类型 长度 允许空值 默认值 说明 Sno char 8 × 主键 Sname varchar 10 × Sex char 2 × 男 只能“男”...
从上到下打印二叉树
题目 从上到下打印出二叉树的每个节点,每层的节点按照从左到右的顺序打印。 例子: 打印顺序:8,6,10,5,7,9,11 二叉树节点定义: 思路: 本题实际上是层序遍历二叉树,根据题目特点,选用队列来存储相应节点,每次取出队列头部元素,如果该元素有子节点,将子节点放入队列中,如此循环。 代码 测试以及结果 总结 本题区别与二叉树的前中后序遍历,它们都是通过栈数据结构来...
Java GUI编程(13)---GridBagLayout网格袋布局
GridBagLayout(),网格袋布局,维持一个动态的矩形单元的网格,矩形单元格被称为显示区域。 组件可占用一个或多个的矩形单元格,组件不要求相同尺寸。 组件由GridBagLayou管理,关联一个约束GridBagConstraints类。 约束组件属性,比如:位置,大小,外部填充,内部填充等。 GridBagConstraints Class 约束属性与值 int gridx,gridy;...