由于这些内容都是比较早之前进行的整理的,所以有的部分是参考了他人的博文,但是由于是之前找的,所以具体的博文链接找不到了,如果原博主看到这个文章或者有人知道其中部分内容的原博文,请与我联系,我将加上原链接,谢谢


1、为什么Java一次编译,到处可运行

  • 因为只需要将java文件编译成字节码文件,在运行平台只要有JVM虚拟机就可以运行。这样Java在不同的平台也不需要重新编译,只需要虚拟机把字节码文件转换成具体平台的机器指令。

2、JVM是如何加载文件的

  • 首先对于字节码文件,使用Class Loader将class文件记载到内存中。然后使用Exction Engine对命令进行解析。对于使用了不同开发文件的原生库我们可以使用Native interface来为Java所用。

3、Java反射机制

  • 对于任何一个类,我们都可以知道这个类的所有属性和方法,对弈任何一个对象我们都能调用他的任意方法和属性。这种动态获取信息以及动态调用对象的方法就是成为Java语言的反射机制。

4、Class Loader

  • Class Loader在Java中有着非常重要的作用,它主要工作在Class装载的加载过程,主要作用是从系统外获取Class的二进制数据流。所有的class都是由他来加载很系统,然后交给虚拟机进行连接初始化等操作。过程为加载-链接(校验-准备-解析)-初始化

5、loadClass和forName区别

  • 对于loadClass没有链接,而forName获取的是已经初始化的。优点就是没有链接初始化可以减少资源浪费,需要的时候再进行初始化。

6、JVM内存模型

主要分为程序计数器,虚拟机栈,本地方法栈 这几个是线程私有的。
而堆(包含常量池,数组和类对象)以及MetaSpace(类加载信息)是线程共享的。

  • 程序计数器:记录当前线程执行的字节码行号的指示器,通过改变这个值来选取下一条需要执行的字节码指令。和线程是一对一的关系即“线程私有”的,对于Native方法计数为Undefine

  • Java虚拟机栈:包含Java方法执行的内存模型,包含多个栈帧。每个栈帧都含有局部变量表,操作栈还有动态连接,返回地址等数据

  • 本地方法栈:与虚拟机栈相似,主要作用是标注了native方法

  • 局部变量存储的是方法执行过程中的所有变量。
    操作数栈:入栈、出栈、复制、交换、产生消费变量


7、递归为什么会引发StackOverFlowError异常

  • 多次递归一直入栈超出虚拟栈深度

8、JVM三大性能调优参数

  • -Xss规定虚拟栈大大小
  • -Xms堆的初始值
  • -Xmx堆能达到的最大值

9、Java内存模型中的堆和栈的区别-内存分配策略

  • 静态存储:编译时确定每个数据目标在运行时的存储空间需求
  • 栈式存储:数据区需求在编译时未知,运行时模块入口确定
  • 堆式存储:编译时或者运行时入口都无法确认,动态分配

10、堆和栈的关系与区别

  • 联系:

    • 引用对象或者数组时,栈中变量保存的是堆中目标的首地址
  • 区别:
    • 管理方式:栈自动释放,堆需要GC
    • 空间大小:栈比堆小
    • 碎片相关:栈产生的随便远小于堆
    • 分配方式:栈支持动态和静态分配,而堆仅支持动态分配
    • 效率:因为底层数据结构不同所以栈效率高于堆

11、元空间、堆、栈、线程独占部分的联系——————内存角度

public class HelloWorld{private String name;public void sayHello(){System.out.println("Hello" + name);}    public void setName(String name){this.name = name;}public static void main(String[] args) {int a = 1;HelloWorld hw = new HelloWorld();hw.setName("test");hw.sayHello();}
}

引用参数
本地变量
局部变量

常见面试题的基础总结(JVM篇)相关推荐

  1. “约见”面试官系列之常见面试题之第九十四篇之MVVM框架(建议收藏)

    目录 一句话总结:vm层(视图模型层)通过接口从后台m层(model层)请求数据,vm层继而和v(view层)实现数据的双向绑定. 1.我大前端应该不应该做复杂的数据处理的工作? 2.mvc和mvvm ...

  2. “约见”面试官系列之常见面试题之第八十篇之css常见属性(建议收藏)

    CSS3增加的新的属性和新属性值很多,其中的重点,比如Flex布局,2D3D效果,关键帧动画等,我们会在其他篇拿出来详细讲解,并附上实例和代码,供大家参考学习.本文只介绍其他常用且兼容性良好(IE9及 ...

  3. “约见”面试官系列之常见面试题之第五十一篇之CSS Sprites(建议收藏)

    CSS Sprites在国内很多人叫css精灵,是一种网页图片应用处理方式.它允许你将一个页面涉及到的所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,载入的图片就不会像以前那样一幅一幅地慢 ...

  4. “约见”面试官系列之常见面试题第三十九篇之异步更新队列-$nextTick(建议收藏)

    目录 一,前言 二,什么是异步更新队列 三,使用异步更新队列 四,结尾 一,前言 这一篇介绍有关异步更新队列的知识,通过异步更新队列的学习和研究能够更好的理解Vue的更新机制 二,什么是异步更新队列 ...

  5. “约见”面试官系列之常见面试题第三十八篇之js常见的继承方式(建议收藏)

    1.原型链继承 核心: 将父类的实例作为子类的原型 将构造函数的原型设置为另一个构造函数的实例对象,这样就可以继承另一个原型对象的所有属性和方法,可以继续往上,最终形成原型链 父类 // 定义一个动物 ...

  6. “约见”面试官系列之常见面试题第三十五篇之轮循机制(建议收藏)

    目录 前言 任务队列 事件的概念 回调函数 事件轮询机制Event Loop: 结语 前言 有人称Event Loop为事件循环机制,而我更愿意将其解释为事件轮询机制,在之后的内容中你会感受到这一点的 ...

  7. “约见”面试官系列之常见面试题之第九十五篇之vue-router的组件组成(建议收藏)

    <router-link :to='' class='active-class'> //路由声明式跳转 ,active-class是标签被点击时的样式<router-view> ...

  8. “约见”面试官系列之常见面试题之第九十二篇之created和mounted区别(建议收藏)

    beforeCreate 创建之前:已经完成了 初始化事件和生命周期 created 创建完成:已经完成了 初始化注册和响应 beforeMount 挂载之前:已经完成了模板渲染 mounted :挂 ...

  9. “约见”面试官系列之常见面试题之第八十七篇之ajax发送多个请求优化(建议收藏)

    AJAX中同时发送多个请求(并发)对象处理方法 在javascript:;" rel="nofollow" onClick="javascript:tagsho ...

最新文章

  1. 风格化手绘纹理包 CGTrader – Stylized Mix Vol. 41 – Hand Painted Texture Pack
  2. 八个防止浪费时间的小窍门
  3. pip安装mysql-python失败,并显示EnvironmentError:找不到mysql_config
  4. MVC-Razor(3)
  5. 服务器重启后启动Docker命令
  6. 我的编程学习日志(1)--进制转换
  7. 解决 The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working
  8. 咕泡-模板方法 template method 设计模式笔记
  9. FreeRTOS调度器挂起与解除
  10. java中怎样任意跳转到指定行而不受循环语句限制
  11. C Tricks(十六)—— 复制字符串
  12. Tensorflow API解析 -目录
  13. 空间可能与时间一样,也是不可逆转的
  14. java 判断客户端是手机端还是PC端(SSH框架)
  15. word中设置多级标题
  16. 基于java的个人日程管理系统mysql
  17. linux基础知识ppt下载,《Linux基础知识》PPT课件.ppt
  18. 行业观点|鞋企转战个性化定制 打响新消费时尚
  19. Python爬虫之爬取绝对领域美女图片
  20. 跨不同导向序列的Cas9结合和切割的定量描绘了靶接合的前景

热门文章

  1. 计算机应用基础教学内容,计算机应用基础教学大纲
  2. vba的like和正则表达式
  3. C语言实现“21点”游戏的输入
  4. python刷OJ入门(指导篇)
  5. 设置elementui表格的上下左右滚动条
  6. 机电一体化PLC毕业设计、课程设计案例分享/液压、电梯、洗衣机、送料控制、步进电动机、装瓶流水线、大小球分拣传送、饮料罐装、自动售货机、立体车库、洗衣机、喷泉、机械手、卧式镗床、温度控制、供水系统……
  7. 获取本机的IP地址代码
  8. Cesium 个性地图的创建(炫酷大屏)
  9. 国家卫健委5G+医疗健康应用试点项目建议方向全文
  10. AT89C51驱动共阴极数码管的应用代码