当前位置: 首页 > news >正文

java面试(jvm)

JVM内存模型

jvm内存结构
细分Eden:

java类加载过程?双亲委派机制?一个对象从加载到JVM,再到被GC清除过程?

JAVA类加载器:AppClassLoader - ExtClassLoader - BootStrapClassLoader。每种类加载器都有他自己的加载目录。
每个类加载器对他加载过的类都有一个缓存
双亲委派:向上委托查找,向下委托加载。为了保护java底层的类不会被应用程序覆盖。
类加载机制
类加载过程:加载 - 连接 - 初始化
加载:通过双亲委派机制把java的字节码数据加载到JVM内存中,并映射成JVM认可的数据结构。
连接:分为3个阶段:1.验证:检查加载到字节信息是否符合JVM规范。2.准备:创建类或接口的静态变量,并赋初始值,半初始化状态。3.解析:把符号引用转化为直接引用

一个对象从加载到JVM,再到被GC清除经历了什么过程?

method{ClassLoaderDemo c = new ClassLoaderDemo; c.xxx} GC
1.用户创建一个对象,JVM先需要在方法区去找对象的类型信息,然后再创建对象。
2.JVM要实例化对象,首先再堆中创建一个对象。-半初始化状态
3.对象先分配在堆内存中新生代的Eden区。然后经过一次Minor GC后对象如果存活会进到S区,后续每次GC对象如果一直存活,就会再S区来回拷贝并给年龄+1(年龄最大15),多次GC后会放入老年代。
4.当方法执行结束后,栈中的指针会先移除掉。
5.堆中的对象,经过Full GC,就会标记为垃圾,然后被GC线程清理掉。

怎么确定一个对象是不是垃圾,什么是GC Root?

有两种垃圾回收机制:
1.引用计数:这种方式是给堆内存当中的每个对象记录一个引用计数,引用个数为0的就认为是垃圾。问题是无法解决循环引用的问题,会造成内存泄漏。
2.根可达算法:内存中从引用根对象向下一直找引用,找不到的对象就是垃圾,可解决循环引用。
GC Root:Stack(JVM Stack,Native Stack),class类,run-time constant pool常量池,static reference静态变量。

JVM有哪些垃圾回收算法?

https://www.cnblogs.com/hellostar/p/16497856.html
1.MarkSweep标记清除算法
标记清除算法
这个算法分为两个阶段:标记阶段:从引用根节点开始所有被引用的对象,垃圾内存标记出来。清除阶段:直接将垃圾内存回收。
缺点:GC时要停掉整个应用,清除后的空闲内存不连续,产生内存碎片。
2.Copying拷贝算法
拷贝算法
将内存分为两半,每次只使用一半,垃圾回收时麻将存活对象拷贝至另一半,这一半全部清除。
缺点:需要两倍内存空间。
3.MarkCompack标记压缩算法
标记压缩
结合了标记-清除和复制优点,第一阶段从根节点标记被引用对象,第二阶段遍历整个堆,把清除未标记对象并且把存活对象压缩到其中一块,按顺序排放。
缺点:算法复杂度高

JVM有哪些垃圾回收器?什么是STW?他们发生在哪些阶段?什么是三色标记?如何解决错标记和漏标记?为什么要设计这么多垃圾回收器? -> 内存逐渐变大

STW:Stop-The-World。垃圾回收算法执行过程中,需要将JVM内存冻结的一种状态,在STW状态下,JAVA所有线程都是停止执行的GC除外。native可以执行,但不能与JVM交互。GC算法优化就是减少STW
JVM垃圾回收器:
垃圾回收算法
1.Serial串行:
需要GC时,直接暂停,GC完继续执行。早期垃圾回收期。只有一个线程执行GC,多CPU下性能会下降,适用于几十兆内存的空间。
Serial
2.Parallel并行:
多线程GC,PS+PO组合是JDK8默认的垃圾回收器,多核CPU下,性能高。
并行
CMS:Concurrent Mark Sweep。将STW打散,让一部分GC线程并发执行。
1.初始标记阶段:STW只标记出根对象直接引用的对象。
2.并发标记:继续标记其他对象,与应用程序时并发执行。
3.重新标记:STW对并发执行阶段的对象进行重新标记。
4.并发清除:并行,将产生的垃圾清除,清除过程中,会不断产生新的垃圾,这些垃圾会留在下次GC。
G1:Garbage Fitst垃圾优先。这种内存模型中对于堆内存不分老年代和新生代,而是划分成小内存块Region。
1.初始标记,标记出GCRoot直接引用的对象。STW
2.标记Region,通过RSet标记出上一个阶段标记的Region引用到Old区的Region
3.并发标记阶段,跟CMS差不多,只是遍历范围不再是整个old区,而是只需要遍历第二部标记出来的Region。
4.重新标记,跟CMS中的重新标记过程是差不多的。
5.垃圾清理:与CMS不同的是,G1可以采用拷贝算法,直接将整个Region中的对象拷贝到另一个Region,而这个阶段,G1只选择垃圾较多的Region来清理,并不是完全清理。
CMS的核心算法就是三色标记。
三色标记:将内存分为三种颜色:黑色(自己和成员变量都标记完毕),灰色(自己标记完,成员变量内没有),白色(自己未标记完)
漏标记:白色的被漏掉了。解决:CMS通过增量标记increment update的方式来解决漏标记的问题。

如何进行JVM调优?JVM参数有哪些?怎么查看一个JAVA进程的JVM参数?如果一个java程序每次运行一段时间后变得卡顿,怎么优化?

jvm通过定制运行参数提高java运行。
jvm参数可分为三类:
1.标注指令:- 开头,所有HotSpot都支持的参数,可以用java -help打印出来。
2.非标注指令:-X开头,特定的HotSpot,可用java -X打印出来。
3.不稳定参数:-XX开头,特定的HotSpot,并且变化大。

相关文章:

java面试(jvm)

JVM内存模型 细分Eden: java类加载过程?双亲委派机制?一个对象从加载到JVM,再到被GC清除过程? JAVA类加载器:AppClassLoader - ExtClassLoader - BootStrapClassLoader。每种类加载器都有他自己的加载目录…...

自动化测试摸索:python+selenium+pytest(持续更新.....)

一、环境搭建 1、python 安装 下载链接:Python Releases for Windows | Python.org 自己选择合适的版本下载 当下载完毕时,找到该安装程序:python-3.12.2-amd64.exe文件,双击启动安装向导。 为了防止C:盘文件因系统故障或者无…...

C++惯用法之RAII思想: 资源管理

C编程技巧专栏:http://t.csdnimg.cn/eolY7 目录 1.概述 2.RAII的应用 2.1.智能指针 2.2.文件句柄管理 2.3.互斥锁 3.注意事项 3.1.禁止复制 3.2.对底层资源使用引用计数法 3.3.复制底部资源(深拷贝)或者转移资源管理权(移动语义) 4.RAII的优势和挑战 5.总…...

矢量图是什么,有哪些格式的文件

矢量图是一种图形设计中常用的图像类型,与我们日常见到的光栅图像(如JPEG、PNG等)有本质的区别。矢量图基于数学方程和几何元素(如点、线、曲线和形状)来表示图像,而不是像光栅图那样通过像素阵列来表示。这…...

Linux 设置快捷命令

以ll命令为例: 在 Linux 系统上,ll 命令通常不是一个独立的程序,而是 ls 命令的一个别名。 这个别名通常在用户的 shell 配置文件中定义,比如 .bashrc 或 .bash_aliases 文件中。 要在 Debian 上启用 ll 命令,你可以按…...

SpringCloudFeign远程调用

文章目录 1. Feign 是什么2. Feign 的使用2.1 引入依赖2.2 写接口2.3 服务调用方2.4 启动测试 3. Feign 日志配置4. Feign 使用优化5. 注意包扫描问题 1. Feign 是什么 Feign 是一个声明式、模板化的 HTTP 客户端,它是由 Netflix 开发并开源的。Feign 极大地简化了…...

Java中List、Set、Map三种集合之间的区别

Java中List、Set、Map三种集合之间的区别 1. List2. Set3. Map 在Java中,List、Set和Map是三种常见的集合类型,它们之间也有一些重要的区别: 1. List List是有序集合,可以存储重复元素。List的实现类常见有ArrayList、LinkedLis…...

SpringMVC之DispatcherServlet组件

目录 一、SpringMVC的核心处理流程二、DispatcherServlet1、init()方法2、doDispatch()方法3、AbstractAnnotationConfigDispatcherServletInitializer类 一、SpringMVC的核心处理流程 请求到达 DispatcherServlet DispatcherServlet 的请求处理: DispatcherServlet…...

抢商家、夺用户、比低价,抖音、快手、小红书“奇招尽出”

随着流量红利逐渐消退,国内电商平台之间互相内卷已成为了行业常态,而无论是在该领域深耕已久的淘宝、京东、拼多多等电商巨头,还是新跨界而来的抖音、快手、小红书等电商新秀都在不断地进行创新,以便为商家提供更好的服务&#xf…...

ChatGPT引领的AI面试攻略系列:AI全栈工程师篇

系列文章目录 AI全栈工程师(本文) 文章目录 系列文章目录一、前言二、面试题1. 基础理论与数据处理2. 机器学习3. 深度学习4. 大模型与迁移学习5. 计算机视觉6. 自然语言处理(NLP)7. 多模态学习8. AI生成内容(AIGC&am…...

上位机图像处理和嵌入式模块部署(qmacvisual配置)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们谈到了qmacvisual的编译、验证码、用户登录以及流程的编辑,这部分都是基础工作。事实上,除了这些内容之外&#xf…...

EXPLAIN PLAN FOR:在Oracle中生成执行计划

目录 案例 解析 Operation类型 在Oracle中,可以使用 EXPLAIN PLAN FOR 命令来生成执行计划,然后通过 SELECT plan_table_output FROM TABLE(DBMS_XPLAN.DISPLAY(PLAN_TABLE))来查看执行计划。需要注意的是,这两个命令需要在同一个窗口下运…...

蓝桥杯 9241.飞机降落

这道题本来作者以为是可以用一些小技巧进行暴力解法的&#xff0c;但是后来试了一下&#xff0c;不能过去全部数据。 下面是对半个的题解&#xff1a; #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…...

数据可视化原理-腾讯-散点图

在做数据分析类的产品功能设计时&#xff0c;经常用到可视化方式&#xff0c;挖掘数据价值&#xff0c;表达数据的内在规律与特征展示给客户。 可是作为一个产品经理&#xff0c;&#xff08;1&#xff09;如果不能够掌握各类可视化图形的含义&#xff0c;就不知道哪类数据该用…...

深度学习-Pytorch实现经典AlexNet网络:山高我为峰

深度学习-Pytorch实现经典AlexNet网络之山高我为峰 深度学习中&#xff0c;经典网络引领一波又一波的技术革命&#xff0c;从LetNet到当前最火的GPT所用的Transformer&#xff0c;它们把AI技术不断推向高潮。2012年AlexNet大放异彩&#xff0c;它把深度学习技术引领第一个高峰…...

25考研习题记录

3月 汤家凤《1800》 基础篇 日期高等数学线性代数概率论3.1 P92-93 P212-214 3.4 P10-15 P10-19 极限题62题 P73-74 P170-172 行列式17题 考研竞赛凯哥每日一题 张宇高数30讲页数3.4P74...

上海计算机学会 2023年12月月赛 丙组T4 迷宫(宽度优先搜索)

第四题&#xff1a;T4迷宫 标签&#xff1a;宽度优先搜索题意&#xff1a;给定 n n nx m m m由 # \# #&#xff08;墙&#xff09;、 . . .&#xff08;空地&#xff09;组成的地图&#xff0c;求从左上角到右下角的最少步数&#xff0c;每次只允许上下左右移动一格&#xff0…...

【Boost搜索引擎项目】Day1 项目介绍+去标签和数据清洗框架搭建

&#x1f308;欢迎来到C项目专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mysq…...

站群服务器需要多大内存

站群服务器的内存需求取决于网站的数量和流量&#xff0c;以及服务器需要运行的应用和服务。RAKsmart小编为您整理发布站群服务器需要多大内存以及站群服务器内存需求的考虑因素。 站群服务器是一种用于托管多个网站的服务器&#xff0c;通常用于搜索引擎优化(SEO)和网络内容管…...

HTB Perfection

Perfection User Namp ┌──(kali㉿kali)-[~/HTB/machine/Perfection] └─$ nmap -A 10.129.226.58 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-03 21:10 EST Nmap scan report for 10....

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...