10道JVM经典面试题

1、 JVM中,new出来的对象是在哪个区?

2、 说说类加载有哪些步骤?

3、 JMM是什么?

4、 说说JVM内存结构?

5、 MinorGC和FullGC有什么区别?

6、 什么是STW?

7、 什么情况下会发生堆/栈溢出?

8、 你了解几种垃圾回收器,简单说说?

9、 垃圾回收算法你了解吗?

10、 如果对象的引用被置为null,会被马上回收吗?

1、 JVM中,new出来的对象是在哪个区?

new出来的对象放在堆里,对象的引用放在栈里。

2、 说说类加载有哪些步骤?

类加载分三步:加载、连接(验证、准备和解析)和初始化。

加载:class文件加载到JVM内存(静态变量、常量放到方法区),产生Class对象。

验证:验证class文件是否格式正确。

准备:为静态变量分配内存并设置默认的初始值

解析:将符号引用替换为直接引用 (栈帧里的动态链接也有一步符号引用转变为直接引用)

初始化:为类的静态变量赋予正确的初始值。

3、 JMM是什么?

JMM是java内存模型,是一种规范,与线程共享有关,堆和方法区所有线程共享,需要对其制定规则规范。主内存:java所有变量都存储在主内存中。工作内存/线程本地内存:本线程用到的变量为主存中的副本拷贝。

4、 说说JVM内存结构?

共享区域:堆、方法区

私有区域:虚拟机栈、程序计数器、本地方法栈。

堆:对象和数组、字符串常量池。

方法区:常量、静态变量,运行时常量池(字面量和符号引用)。

虚拟机栈:局部变量、对象引用。

程序计数器:记录线程执行位置,以便下一次继续执行。

本地方法栈:是一些native方法(c++实现)

5、 MinorGC和FullGC有什么区别?

MinorGC发生在年轻代,当eden区满了之后会触发MinorGC.

FullGC发生在老年代,它会暂停所有线程回收年轻代和老年代的对象。

6、 什么是STW?

STW(STOP THE WORLD)GC前会执行STW操作。线程进入JVM设置的“安全点”,暂停所有运行中的线程,stop the world,然后开始GC。

7、 什么情况下会发生堆/栈溢出?

递归容易发生栈溢出。 堆溢出:对象一直增大,不释放。 比如循环里一直list.add

8、 你了解几种垃圾回收器,简单说说?

Serial单线程串行回收器、Parallel并行回收器、CMS回收器、G1回收器、ZGC回收器。

Serial是年轻代串行回收器,采用复制算法。

Serial Old是老年代串行回收器,采用标记整理算法。

Parallel Scavenge是年轻代并行回收器,采用复制算法。

Parallel Old是老年代并行回收器,采用标记整理算法。

ParNew是年轻代并行回收器,采用复制算法,与Scavenge的区别是它能够与CMS结合。

CMS是老年代回收器,采用标记清除算法,特点是低停顿时间,但牺牲一定的吞吐量。

G1回收器是JDK9默认的回收器,废除了空间上的区域划分,而是采用一个个独立的region区域组成,逻辑上保留了分代策略。

ZGC是JDK11引入的回收器,是一种低延迟的回收器。

9、 垃圾回收算法你了解吗?

有引用计数器算法、复制算法、标记清除算法、标记整理算法。

引用计算器就是对象被别人引用时,它的计数器加1,引用结束就减1,对象的计数器值为0就回收。

标记清除根据根节点寻找可达对象,如果不可达就回收,可达性分析法就是挑选一个稳定的对象作为GCROOT,然后寻找可达的对象,不可达就回收。

复制算法把空间分钟两块,回收的时候就把未使用的复制到另一块区域,然后满了就删除本区域,从头到尾只使用一块空间,另一块作为存放回收时未使用的部分。

标记整理算法在标记-清除算法的基础上做了一些优化。在一块内存空间内,标记可达的对象,压缩到内存的一边,然后删除其他对象,这样就不会产生内存碎片。

10、 如果对象的引用被置为null,会被马上回收吗?

不会,在下一个垃圾回收周期中,这个对象是可被回收的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当“广撒网”遇上“精准定点”的鱼叉式网络钓鱼

批量网络钓鱼电子邮件活动倾向于针对大量受众,它们通常使用笼统的措辞和简单的格式,其中不乏各种拼写错误。而有针对性的攻击往往需要付出更大的努力,攻击者会伪装成雇主或客户向目标发送包含个人详细信息的个性化消息。在更大范围内采用这种…

大语言模型-文本检索任务基准 BEIR

BEIR (A Heterogeneous Benchmark for Zero-shot Evaluation of Information Retrieval Models) 文本检索任务的基准,使用18 个数据集为检索系统的零样本评估提出了一个标准化基准, BEIR 基准上在9个不同领域的检索任务评估 10 种不同的检索方法。 九个…

义务外贸wordpress独立站主题

健身器材wordpress网站模板 跑步机、椭圆机、划船机、动感单车、健身车、深蹲架、龙门架、健身器材wordpress网站模板。 https://www.jianzhanpress.com/?p4251 农业机械wordpress网站模板 植保机械、畜牧养殖机械、农机配件、土壤耕整机械、农业机械wordpress网站模板。 …

2.1.卷积层

卷积 ​ 用MLP处理图片的问题:假设一张图片有12M像素,那么RGB图片就有36M元素,使用大小为100的单隐藏层,模型有3.6B元素,这个数量非常大。 识别模式的两个原则: 平移不变性(translation inva…

K8S 部署jaeger-operator,与其演示项目hotrod

最近在研究observabilty在K8S环境的onboard,查阅了一些资料,发现现在网上Prometheus/Metrics相关的资源,是比较全面的,而Trace相关的部分不是很全面,所以写下这篇博文,以做备忘和分享。 组件介绍 我这里选…

Excel的操作

Excel的操作 一、Excel的作用 Excel是一款功能强大的电子表格软件,主要用于数据处理和分析。 二、Excel的基础操作 新建文档 一般情况下,就在桌面空白处,点击鼠标右键,即可新建 三、页面布局 1、快速访问工具栏 主要包含&am…

为 android编译 luajit库、 交叉编译

时间:20200719 本机环境:iMac2017 macOS11.4 参考: 官方的文档:Use the NDK with other build systems 写在前边:交叉编译跟普通编译类似,无非是利用特殊的编译器、链接器生成动态或静态库; make 本质上是按照 Make…

ssm 学习 ---(spring)

一、spring框架 1、基本框架 2、Beanfactory快速入门 配置清单:xml文件 (1) 导入jar包或者maven坐标 (2) 定义UserService接口以及UserService实现类 (3) 创建bean.xml配置文件,将UserService信息配置到该xml文件中; (4)编写测试代码,创…

ubuntu lxqt触摸屏旋转校准(usb触摸屏、lxqt、ubuntu23.10)

参考文章:https://www.codetd.com/article/5651388 1.查看触摸屏驱动 rootxyy:~# xinput list ⎡ Virtual core pointer id2 [master pointer (3)] ⎜ ↳ Virtual core XTEST pointer id4 [slave pointer (2)…

如何根据同一行的ID利用R语言对值进行求和

需求:将属于同一分组的对应的值进行求和或者求平均值 #设置工作目录 > getwd() [1] "C:/Users/86150/Documents" > setwd("C:/Users/86150/Desktop/AA2024/RUF") > list.files() #读取文件 >install.packages("readxl")…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

在 CI/CD Pipeline 中实施持续测试的最佳实践!

随着软件开发周期的不断加快,持续集成(CI)和持续交付/部署(CD)已经成为现代软件开发的重要组成部分。在这一过程中,持续测试的实施对于确保代码质量、提高发布效率至关重要。本文将详细介绍在CI/CD流水线中…

JVM:JavaAgent技术

文章目录 一、Java工具的介绍二、Java Agent技术1、介绍2、静态加载模式3、动态加载模式 三、搭建java agent静态加载模式环境1、创建maven项目2、编写类和premain方法3、编写MANIFEST.MF文件4、使用maven-assembly-plugin进行打包5、创建Spring Boot应用 一、Java工具的介绍 …

mac数据恢复软件哪个好用 macbook数据恢复专业软件下载 mac数据恢复概率大吗 苹果电脑数据恢复软件哪个好

作为办公的必需品,mac的普及率虽然比不上其他品牌的windows操作系统,但是使用人群也一致居高不下,因此,mac数据丢失的问题也时常发生。当数据丢失以后,如何找回数据成了一大难题。 一、Mac数据恢复概率大吗 一般情况下…

配置mysql8.0.21版本docker-compose启动容器

1. 总览 2 docker-compose.xml配置 version: 3 services:mysql:image: 192.168.188.131:8000/mysqlrestart: alwaysvolumes:- ./data:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnf- ./mysql-files:/var/lib/mysql-files- ./log/mysql:/var/log/mysqlenvironment:MYSQL_ROOT_PA…

huawei USG6001v1学习----NAT和智能选路

目录 1.NAT的分类 2.智能选路 1.就近选路 2.策略路由 3.智能选路 NAT:(Network Address Translation,网络地址转换) 指网络地址转换,1994年提出的。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局…

【MySQL】一些业务场景常见的查询,比如实现多表字段同步,递归查询等

目录 快速加注释多表关联查询更新多个字段循环查询子级方法1:递归查询方法2:循环查询 快速加注释 使用ALTER TABLE语句可以修改表结构,包括添加注释。以下是添加注释的语法: ALTER TABLE 表名 MODIFY COLUMN 列名 列类型 COMMEN…

【数据结构初阶】顺序表三道经典算法题(详解+图例)

Hello!很高兴又见到你了~~~ 看看今天要学点什么来充实大脑吧—— 目录 1、移除元素 【思路图解】 【总结】 2、删除有序数组中的重复项 【思路图解】 【总结】 3、合并两个有序数组 【思路图解】 【总结】 至此结束,Show Time! 1、…

TCP/IP协议,以及对等网络通信原理!

TCP/IP模型协议分层 应用层: HTTP:超文本传输协议(网站访问WEB)(Apache、nginx)(IIS) FTP:文件传输协议(网络文件传输) TFTP:简单文件传输协议&#xff0…

神经网络理论(机器学习)

motivation 如果逻辑回归的特征有很多,会造出现一些列问题,比如: 线性假设的限制: 逻辑回归是基于线性假设的分类模型,即认为特征与输出之间的关系是线性的。如果特征非常多或者特征与输出之间的关系是非线性的&#…