java面试题速刷---JVM&hashMap

1.你们用什么工具监控JVM

Jconsule, jvisualvm
jconsole和jvisualvm都是Java虚拟机的监控和诊断工具。
jconsole是JDK自带的一个监控工具,可以监控Java程序的内存、线程、类加载等信息,并且可以执行JMX MBean相关操作。jconsole提供了图形界面,使用方便,是Java程序开发和调试的常用工具,它通过连接到正在运行的Java应用程序JMX代理来获取信息。jconsole需要在目标Java应用程序上启动JMX代理,因此在应用程序中加入JMX代理的相关配置即可使用。
jvisualvm同样是JDK自带的监控和诊断工具,也具备丰富的功能,包括查看应用程序线程状态、堆内存使用情况,GC和类加载信息等。另外,jvisualvm还可以连接到目标应用程序进行远程监控,并且可以对应用程序进行分析和诊断。jvisualvm也提供了丰富的插件,可以扩展功能,使其更加强大。
总的来说,jconsole和jvisualvm都是非常优秀的Java虚拟机监控和诊断工具,使用起来都比较简单方便,能够方便地帮助我们定位问题并对Java应用程序进行监控和优化。

2.JVM内存模型,每个部分是干嘛的

堆:存放对象的区域,所有线程共享
虚拟机栈:对应一个方法,线程私有的,存放局部变量表,操作数栈,动态链接等等
本地方法栈:对应的是本地方法,在hotspot中虚拟机栈和本地方法栈是合为一体的
程序计数器:确定指令的执行顺序
方法区:存放虚拟机加载的类的信息,常量,静态变量等等,JDK1.8后,改为元空间
运行时常量池(Runtime Constant Pool):属于方法区的一部分,用于存储编译器生成的各种字面量和符号引用。在类加载后,Java虚拟机会将常量池中的符号引用替换为直接引用,这个过程叫做解析。
直接内存(Direct Memory):并不是JVM运行时数据区的一部分,它是在堆外分配的一块内存区域。JDK1.4中引入了NIO(New IO)库,它可以将FileChannel的数据修改映射到堆外内存上来执行,这样效率更高。直接内存的分配和释放不由Java虚拟机控制,而是由程序员自己负责管理。

3.类加载流程(JVM启动流程)

loading加载:class文件从磁盘加载到内存中
verification验证:校验class文件,包括字节码验证,元数据验证,符号引用验证等等
preparation准备:静态变量赋默认值,只有final会赋初始值
resolution解析:常量池中符号引用,转换成直接访问的地址
initializing初始化:静态变量赋初始值

4.JVM有哪些类加载器,用到什么设计模式,为什么这样设计

  1. BootStrap ClassLoader 启动类加载器,加载<JAVA_HOME>\lib下的类
  2. Extenstion ClassLoader 扩展类加载器,加载<JAVA_HOME>\lib\ext下的类
  3. Application ClassLoader 应用程序类加载器,加载Classpath下的类
  4. 自定义类加载器
    这里是用到了双亲委派模式,从上往下加载类,在这过程中只要上一级加载到了,下一级就不会加载了,这麽做的目的
    l 不让我们轻易覆盖系统提供功能
    l 也要让我们扩展我们功能。

5.什么是栈帧,它由什么组成

栈帧(方法执行形成栈帧):栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,线程私有。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。每一个方法从调用至执行完成的过程,都对应着一个栈帧在虚拟机栈里从入栈到出栈的过程,栈帧随着方法调用而创建,随着方法结束而销毁

6.JVM1.8和之前有什么区别

区别一(方法区)
1.8版本之后,使用元数据区实现了方法区,之前是使用永久代来实现方法区,大小是启动时固定好的;
元空间不在虚拟机中,而是使用本地内存,并且大小可以自动增长,减少了OOM(内存溢出)的几率;
区别二(堆区)
Java7之后运行时常量池从方法区移到了这里,为Java8移出永久代做好准备;

7.垃圾标记算法有哪些

垃圾标记算法有:引用计数和可达性算法
引用计数:给每一个对象添加一个引用计数器

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值