当前位置:   article > 正文

【金三银四】Java虚拟机面试题(2021最新版)_你听过直接内存吗?

你听过直接内存吗?

目录

前言

一、Java内存模型

1. 我们开发人员编写的Java代码是怎么让电脑认识的

2. 为什么说java是跨平台语言

3. Jdk和Jre和JVM的区别

4. 说一下 JVM由那些部分组成,运行流程是什么?

5. 说一下 JVM 运行时数据区

6. 详细的介绍下程序计数器?(重点理解)

7. 详细介绍下Java虚拟机栈?(重点理解)

8. 你能给我详细的介绍Java堆吗?(重点理解)

9. 能不能解释一下本地方法栈?

10. 能不能解释一下方法区(重点理解)

11. 什么是JVM字节码执行引擎

12. 你听过直接内存吗?

13. 知道垃圾收集系统吗?

14. 堆栈的区别是什么?

15. 深拷贝和浅拷贝

16. Java会存在内存泄漏吗?请说明为什么?

二、垃圾回收机制及算法

17. 简述Java垃圾回收机制

18. GC是什么?为什么要GC

19. 垃圾回收的优点和缺点

20. 垃圾回收器的原理是什么?有什么办法手动进行垃圾回收?

21. JVM 中都有哪些引用类型?

22. 怎么判断对象是否可以被回收?

23. Full GC是什么

24. 对象什么时候可以被垃圾器回收

25. JVM 垃圾回收算法有哪些?

26. JVM中的永久代中会发生垃圾回收吗

三、垃圾收集器以及新生代、老年代、永久代

27. 讲一下新生代、老年代、永久代的区别

28. Minor GC、Major GC、Full GC是什么

29. Minor GC、Major GC、Full GC区别及触发条件

30. 为什么新生代要分Eden和两个 Survivor 区域?

31. Java堆老年代( Old ) 和新生代 ( Young ) 的默认比例?

32.为什么要这样分代:

33. 什么是垃圾回收器他和垃圾算法有什么区别

34. 说一下 JVM 有哪些垃圾回收器?

35. 收集器可以这么分配?(了解就好了)

36. 新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?

37. 简述分代垃圾回收器是怎么工作的?

四、内存分配策略

38. 简述java内存分配与回收策率以及Minor GC和Major GC

五、虚拟机类加载机制

42. 简述java类加载机制?

43.类加载的机制及过程

44. 描述一下JVM加载Class文件的原理机制

45. 什么是类加载器,类加载器有哪些?

46. 说一下类装载的执行过程?

47. 什么是双亲委派模型?

六、JVM调优

48. JVM 调优的参数可以在那设置参数值

49. 说一下 JVM 调优的工具?

50. 常用的 JVM 调优的参数都有哪些?

51. JVM的GC收集器设置

最后


前言

我坚信,机会永远属于有准备的人,我们与其羡慕他人的成功,不如从此刻起,积累足够多的知识和面试经验,为将来进入更好的公司做好充分的准备!想让面试官在短短的几十分钟内认可你的能力?想在最短的时间内收获 Java 技术栈最核心的知识点?想要更全面更深入的了解 Java 技术?这篇文章给你想要的所有答案。

小编分享的这份金三银四Java后端开发面试总结包含了JavaOOP、Java集合容器、Java异常、并发编程、Java反射、Java序列化、JVM、Redis、Spring MVC、MyBatis、MySQL数据库、消息中间件MQ、Dubbo、Linux、ZooKeeper、 分布式&数据结构与算法等26个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份PDF拿下众多大厂的offer,今天在这里总结分享给到大家!【持续更新中!】

完整版Java面试题地址:2021最新面试题合集集锦

序号 专题 内容 链接地址
1 中间件 【金三银四】Java中间件面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/114002362
2 微服务 【金三银四】Java微服务面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/113923549
3 并发编程 【金三银四】Java并发编程面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/113895576
4  Java基础 【金三银四】Java基础知识面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115146056
5 Spring Boot 【金三银四】Spring Boot面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115186811
6  Redis 【金三银四】Redis面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115188010
7  Spring MVC 【金三银四】Spring MVC面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115220638
8 Spring Cloud 【金三银四】Spring Cloud面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115220987
9 MySQL优化 【金三银四】MySQL优化面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115254620
10 JVM 【金三银四】JVM性能调优面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115283079
11 Linux 【金三银四】Linux面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115283583
12 Mybatis 【金三银四】Mybatis面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115285732
13 网络编程 【金三银四】TCP,UDP,Socket,Http网络编程面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115464896
14 设计模式 【金三银四】设计模式面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115466449
15 大数据 金三银四】大数据面试题100道(2021最新版) https://blog.csdn.net/SQY0809/article/details/115484939
16 Tomcat 【金三银四】Tomcat面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115486648
17 多线程 【金三银四】多线程面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115487212
18 Nginx 【金三银四】Nginx_BIO_NIO_AIO面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115488446
19 memcache 【金三银四】memcache面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115494213
20 java异常 【金三银四】java异常面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115530401
21 Java虚拟机 【金三银四】Java虚拟机面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115532365
22 Java集合 【金三银四】Java集合面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115599284
23 Git常用命令 【金三银四】Git常用命令(2021最新版) https://blog.csdn.net/SQY0809/article/details/115602390
24 Elasticsearch 【金三银四】Elasticsearch面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115604293
25 Dubbo 【金三银四】Dubbo面试题(2021最新版) https://blog.csdn.net/SQY0809/article/details/115605560


一、Java内存模型

1. 我们开发人员编写的Java代码是怎么让电脑认识的

2. 为什么说java是跨平台语言

  • 这个夸平台是中间语言(JVM)实现的夸平台
  • JavaJVM从软件层面屏蔽了底层硬件、指令层面的细节让他兼容各种系统

3. Jdk和Jre和JVM的区别

  • Jdk包括了JreJvmJre包括了Jvm
  • Jdk是我们编写代码使用的开发工具包
  • Jre Java的运行时环境,他大部分都是 C C++ 语言编写的,他是我们在编译java时所需要的基础的类库
  • Jvm俗称Java虚拟机,他是java运行环境的一部分,它虚构出来的一台计算机,在通过在实际的计算机上仿真模拟各种计算机功能来实现Java应用程序
  • Java官方的图片,Jdk中包括了JreJre中包括了JVM

4. 说一下 JVM由那些部分组成,运行流程是什么?

5. 说一下 JVM 运行时数据区

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存区域划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有些区域随着虚拟机进程的启动而存在,有些区域则是依赖线程的启动和结束而建立和销毁。Java 虚拟机所管理的内存被划分为如下几个区域:

  • 程序计数器(Program Counter Register):当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能,都需要依赖这个计数器来完成;为什么要线程计数器?因为线程是不具备记忆功能
  • Java 虚拟机栈(Java Virtual Machine Stacks):每个方法在执行的同时都会在Java 虚拟机栈中创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息;栈帧就是Java虚拟机栈中的下一个单位
  • 本地方法栈(Native Method Stack):与虚拟机栈的作用是一样的,只不过虚拟机栈是服务 Java方法的,而本地方法栈是为虚拟机调用 Native 方法服务的;
  • Native 关键字修饰的方法是看不到的,Native 方法的源码大部分都是 CC++ 的代码
  • Java 堆(Java Heap):Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存;
  • 方法区(Methed Area):用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。

6. 详细的介绍下程序计数器?(重点理解)

7. 详细介绍下Java虚拟机栈?(重点理解)

1. Java虚拟机是线程私有的,它的生命周期和线程相同。

2. 虚拟机栈描述的是Java方法执行的内存模型: 每个方法在执行的同时 都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

解释:虚拟机栈中是有单位的,单位就是栈帧,一个方法一个栈帧。一个栈帧中他又要存储,局部变量,操作数栈,动态链接,出口等。

8. 你能给我详细的介绍Java堆吗?(重点理解)

  • java堆(Java Heap)是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例。
  • Java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配。
  • java堆是垃圾收集器管理的主要区域,因此也被成为“GC
  • 从内存回收角度来看java堆可分为:新生代和老生代。
  • 从内存分配的角度看,线程共享的Java堆中可能划分出多个线程私有的分配缓冲区。
  • 无论怎么划分,都与存放内容无关,无论哪个区域,存储的都是对象实例,进一步的划分都是为了
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/960361
推荐阅读
相关标签
  

闽ICP备14008679号