Java培训JVM 高频面试题

VM总体分为JVM规范和JVM实现

JVM和JDK的区别

JRE = JVM+Java标准库

JDK = JRE+开发调试诊断工具

JVM具有跨平台性

JVM跨语言性:JVM只识别字节码

JVM的运行时数据区有哪些

运行时数据区的定义:Java虚拟机在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域

什么是堆内存?堆内存包含哪些部分

堆是JVM最大的内存区域,我们申请的几乎所有对象都存储在那

堆空间为了方便GC模块进行对象分配和回收,可以把堆空间进行划分:新生代、老年代
刚创出来的对象会放在新生代,经过多次垃圾回收会放在老年代。在此我向大家推荐一个架构学习交流圈。交流学习伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

新创建的对象会放在Eden区,如果Eden区的空间满了,会促发垃圾回收,把对象复制到S0,下次满了,【关注Java进阶营】会复制到S1,S0复制到S1。一般情况S区放不下会放在老年代,一般情况下要经过15次垃圾回收才会放在老年代

什么是内存泄露,和内存溢出有什么关系

内存泄露:本来无用的对象却继续占用内存,没有在恰当的时机释放占用的内存。

不使用的内存,却没有被释放,这个叫做内存泄露

与内存溢出的关系:

如果存在严重的内存泄露问题,随着时间的推移,必须会引起内存溢出。

Java有四种类型的垃圾回收器

1.串行垃圾回收器

2.并行垃圾回收器

3.CMS垃圾回收器

4.G1垃圾回收器

自己百度更深刻

Java8默认使用的垃圾回收器是什么

并行回收器,它是多线程的

指使用多个GC worker 线程并行地执行垃圾收集,能充分利用CPU的能力,缩短垃圾收集的暂停时间

除了单线程的GC,PS、CMS、G1都是多个线程来并行执行GC工作

G1 是垃圾优先,哪块垃圾最多就优先清理它

什么是STW?什么是安全点?什么是安全区域?

所有应用线程都需要暂停后才能执行GC,这时候就叫STW(GC暂停)。

类加载和类加载器

类加载是一个类从被加载到Java虚拟机内存开始到卸载出内存。

生命周期经历 --加载、验证、准备、解析、初始化、使用和卸载 七个阶段,其中验证、准备、解析统称为连接。

加载阶段虚拟机需要完成三件事情:

1.通过一个类的全限定名来获取定义此类的二进制字节流

2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

3.在内存中生成一个代表这个类的java.lang.Class对象,作为这个方法区的所有数据的访问入口

会把第一步这个动作放在Java虚拟机外部去实现,便于程序自己决定如何获取所需的类,这个动作被称为“类加载器”

什么是双亲委派机制?有什么作用?

双亲委派机制是属于类加载的一个机制,加载之前,会委派给它的父加载器进行加载,www.atguigu.com如果父加载器不行,就自己加载。可以避免类的重复加载,保证Java核心的安全稳定

使用过哪些JVM相关的命令工具

jps 列出当前机器正在运行的虚拟机进程,jps从操作系统的临时目录去找

-q:仅显示进程

-m:输出住函数传入的参数

-l:输出应用程序住类完整的package名称或jar完整名称

-v:列出jvm参数

jstat 用于监视虚拟机各种运行状态信息的命令行工具

jstat -gc 13616 查看jvm进程13616的情况
阿里面试面试题:链接:https://pan.baidu.com/s/1ryi6EMUEjZvlaRGEnipryw
提取码:tn3g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值