JVM面试合集

前言

前文介绍了数据库、中间件相关。本期我们继续学习Java特性的JVM。

JVM面试合集

  1. JVM的架构组成是怎样的?

JVM主要由**类加载器(ClassLoader)、运行时数据区(Runtime Data Area)、执行引擎(Execution Engine)和垃圾收集器(Garbage Collector)**组成。其中,类加载器负责加载Java类;运行时数据区包括堆、栈、方法区等内存区域;执行引擎负责执行字节码;垃圾收集器负责回收不再使用的内存。

  1. JVM的内存模型是怎样的?

JVM的内存模型主要包括堆、栈、方法区和本地方法栈等部分。堆是JVM所管理的最大一块内存区域,主要用于存放各种对象实例;栈是每个线程私有的一块内存区域,用于存储局部变量、操作数栈、动态链接、方法出口等信息;方法区用于存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;本地方法栈与栈类似,不过它是为Native方法服务的。

  1. 描述一下JVM加载class文件的原理机制?

JVM加载class文件的原理机制主要包括加载、链接和初始化三个阶段。加载阶段主要是通过类加载器将class文件加载到内存中,生成对应的Class对象;链接阶段包括验证、准备和解析三个步骤,主要是对字节码进行校验、为字段分配内存并设置初始值、将符号引用转换为直接引用等处理初始化阶段主要是对类的静态字段进行初始化。

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

JVM的垃圾回收算法主要包括标记-清除算法、复制算法、标记-整理算法和分代收集算法。标记-清除算法是最基础的垃圾回收算法,它通过标记需要回收的对象并清除它们来回收内存;复制算法将内存分为两个区域,每次只使用其中一个区域,当该区域内存使用完时,将存活的对象复制到另一个区域中;标记-整理算法在标记-清除算法的基础上进行了优化,通过移动存活对象来消除内存碎片;分代收集算法根据对象存活周期的不同将内存划分为不同的区域,采用不同的垃圾回收算法进行回收。

  1. 你知道哪些垃圾收集器,各自的特点?

Java中的垃圾收集器主要包括Serial收集器、ParNew收集器、Parallel收集器、Cms收集器和G1收集器等。Serial收集器是单线程的,它在进行垃圾收集时会暂停所有用户线程;ParNew收集器是Serial收集器的多线程版本,它可以利用多个CPU核心进行垃圾收集;Parallel收集器也称为吞吐量优先收集器,它以并行的方式进行垃圾收集,并关注吞吐量;Cms收集器是一种以获取最短回收停顿时间为目标的收集器,它基于标记-清除算法实现;G1收集器是一种面向服务端应用的垃圾收集器,它将堆内存划分为多个独立的子区域,并可以预测停顿时间。

  1. 介绍一下JVM中的类加载机制,双亲委派模型是什么?

JVM中的类加载机制是指将Java类的字节码文件加载到内存中,并生成对应的Class对象的过程。类加载机制主要包括加载、链接和初始化三个阶段。在类加载过程中,JVM采用了双亲委派模型来保证类的唯一性和安全性。双亲委派模型是指当一个类加载器收到类加载请求时,它不会自己去加载这个类,而是将这个请求委派给父类加载器去完成。只有当父类加载器无法完成这个加载请求时,子类加载器才会尝试自己去加载。这样可以避免类的重复加载和一些安全问题。

  1. Java对象创建过程是怎样的?

Java对象的创建过程主要包括类加载、内存分配、初始化和返回对象引用等步骤。首先,JVM需要加载类的字节码文件并生成对应的Class对象;然后,在堆内存中为对象分配内存空间,并初始化对象的属性值和状态;最后,返回对象的引用给调用者。在对象创建过程中,JVM还会进行一些优化处理,如即时编译、逃逸分析等,以提高程序的执行效率。

  1. 描述一下Java内存模型(JMM)?

Java内存模型(JMM)是Java虚拟机规范中定义的一种内存模型,它描述了Java程序中线程之间的内存可见性和同步行为。JMM规定了所有的变量都存储在主内存中,而每个线程都有自己的工作内存。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。JMM通过定义一系列的Happens-Before规则来保证多线程之间的内存可见性和有序性。

  1. 在工作中遇到jvm相关的问题?

A. Cms的触发参数配置太大,导致内存占比很高时未触发fgc
B. 默认GC配置是Parallel New + Old,需要通过参数配置才可使用ParNew + CMS 配置
C. 要配置gc日志和观察gc频率分析内存使用的合理性

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

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

相关文章

如何实现无公网ip远程SSH连接家中本地的树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…

word文档怎么做成翻页电子书

随着科技的进步,电子书已成为越来越多人阅读的首选。翻页电子书以其独特的翻页效果和丰富的互动功能,更是受到了广大读者的喜爱。那么,如何将传统的Word文档制作成翻页电子书呢? 一、了解翻页电子书的特点 翻页电子书&#xff0c…

计网Lesson12 - UDP客户服务器模型和UDP协议

文章目录 丢个图在这,实在不是很明白在讲啥,等学完网编的我归来狠狠拿下它

js原型模式克隆

原型模式的实现关键,是语言本身是否提供了clone方法。ECMAScript 5提供了Object.create方法,可以用来克隆对象 var Plane function(){this.blood 100;this.attackLevel 1;this.defenseLevel 1;};var plane new Plane();plane.blood 500;plane.atta…

ArcGIS Pro 如何计算长度和面积等数据?

要素的几何属性属于比较重要的信息,作为一款专业的GIS软件,ArcGIS Pro自然也是带有计算几何的功能,这里为大家介绍一下计算方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的矢量数据,除了矢…

3步体验在DAYU200开发板上完成OpenHarmony对接华为云IoT

一、前言 OpenHarmony 3.1.1 是一个开源的智能终端操作系统,主要用于智能家居、智能手机、平板电脑、智能穿戴设备等智能终端设备。是一个分布式操作系统,支持多种硬件平台和多种编程语言,可以方便地进行移植和定制。 特点: &a…

【SpringBoot3】什么是SpringBoot Starter,创建自己的Starter

文章目录 一、什么是SpringBoot Starter1、介绍2、Starter 命名规则 二、Starter 工作原理三、Spring Boot Starter Parent四、如何创建自己的Starter1. 创建项目2. 添加依赖3. 编写自动配置4. 创建spring.factories文件5. 添加附加配置属性(可选) 参考 …

Java类和对象详解

文章目录 一、面向对象初步认识1.1 什么是面向对象 二、类的定义和使用2.1 简单认识类2.2 类的定义格式 三、类的实例化3.1 什么是类的实例化3.2 类和对象的说明 四、对象的构造及初始化4.1 如何初始化对象4.2 构造方法(1) 概念(2) 特性 4.3 默认初始化4.4 就地初始化 本文章&a…

微信小程序px、rpx、vh、百分比单位介绍

目录 px rpx vh 百分比% px px:css长度单位,一般为1/96英寸。 rpx rpx: 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。 设备rpx换算px (屏幕宽…

新版MQL语言程序设计:原型模式的原理、应用及代码实现

文章目录 一、什么是原型模式二、为什么需要原型模式三、原型模式实现方法四、原型模式的应用范围及例子五、原型模式的代码实现 一、什么是原型模式 原型模式是一种创建型设计模式,它允许通过复制现有对象来创建新对象,而无需通过实例化类来创建 二、为…

图片中的水印怎么去掉?教你三个去水印方法

在拍摄照片时,有时候会遇到不期而遇的路人出现在镜头中,给照片带来不必要的干扰。这时候我们就需要把路人给去掉,让照片变的更加完美。下面我将给大家分享三个把照片中的路人去掉的小妙招。 一、水印云 水印云是一款非常实用的图片处理工具…

腾讯发表多模态大模型最新综述,从26个主流大模型看多模态效果提升关键方法

在大规模语言模型(LLMs)通往通用人工智能(AGI)的道路中,从传统的单一的“语言模态”扩展到“图像”、“语音”等等的“多模态”必然是大模型进化的必经之路。 在过去的 2023 年,多模态大规模语言模型&…

Hotspot源码解析-第28章-终结篇章

第28章-终结篇章 经过前面27章的介绍,终于把Java虚拟机(hotspot)的运行流程和实现细节都走完了,相信能让读者对Java的运行机制和设计原理有一个全新的认识,众观全网及书籍,似乎没有一人这么系统的逐行对ho…

第2章 战略设计

第2章 战略设计 2-1 智慧零售案例项目介绍2-2 建模和设计的整体流程2-3 如何描述模型?从用户故事到通用语言2-4 SmartRM系统整体战略设计2-5 SmartRM通用语言文档2-6 分解问题:领域划分和子域2-7 确定系统最核心的部分:核心域和精炼2-8 分解模…

【Node-RED】node-red-contrib-opcua-server模块使用(2)

这里写自定义目录标题 前言示例简单介绍变量产生opcuaServe配置 地址空间的配置创建opcua服务器获取命名空间初始化变量定义文件夹定义文件夹中的变量view文件夹增加view文件夹中查阅信息定义最终效果 加密设置opcuaServe组件配置客户端配置 参考官网博文 前言 上期博文【Node…

零基础学编程,中文编程入门视频教程

零基础学编程,中文编程入门视频教程 一、前言 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载——常用工具下载——编程工具免费版下载及实例源码下载。 如上图为编程工具构件…

c语言实战之贪吃蛇

文章目录 前言效果展示游戏用到的图片游戏思路一览游戏前准备一、贪吃蛇、食物、障碍物节点坐标的结构体二、枚举游戏状态、和贪吃蛇的方向三、维护运行的结构体 游戏开始前的初始化一、学习图形库相关知识二、设置背景三、欢迎界面四、初始化贪吃蛇五、生成障碍物六、生成食物…

Codeforces Round 811 (Div. 3)(VP-15,寒假加训)

A. 模拟 // Problem: A. Everyone Loves to Sleep // Contest: Codeforces - Codeforces Round 811 (Div. 3) // URL: https://codeforces.com/group/RAx5fiilkP/contest/1714/problem/A // Memory Limit: 256 MB // Time Limit: 2000 ms // // Powered by CP Editor (https…

SharedPreferences卡顿分析

SP的使用及存在的问题 SharedPreferences(以下简称SP)是Android本地存储的一种方式,是以key-value的形式存储在/data/data/项目包名/shared_prefs/sp_name.xml里,SP的使用示例及源码解析参见:Android本地存储之SharedPreferences源码解析。以…

【JAVA语言-第16话】集合框架(三)——Set、HashSet、LinkedHashSet、TreeSet集合的详细解析

目录 Set集合 1.1 概述 1.2 特点 1.3 HashSet集合 1.3.1 概述 1.3.2 哈希表 1.3.3 哈希值 1.3.4 练习 1.3.5 HashSet存储自定义类型元素 1.4 LinkedHashSet集合 1.4.1 概述 1.4.2 特点 1.4.3 练习 1.5 TreeSet集合 1.5.1 概述 1.5.2 练习 1.6 HashSet、Lin…