JAVA每日面经——JVM篇(包含JVM优化)

news2024/12/22 18:15:06

👩🏽‍💻个人主页:阿木木AEcru

🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》

💹每一次技术突破,都是对自我能力的挑战和超越。

一、什么是JVM?

Java虚拟机(JVM)是Java编程语言的核心组件之一,是一个能够执行Java字节码的虚拟机器。它是Java跨平台特性的关键所在,允许Java程序在不同的操作系统上运行,而不需要重新编译成特定平台的机器码。JVM负责将Java源代码编译成字节码,然后在运行时解释或编译执行这些字节码。

二、JVM由什么组成?

在这里插入图片描述

  • 程序计数器:是当前线程执行的字节码行号的指示器,用于记录正在执行的虚拟机字节指令地址。它是线程私有的,每个线程都有自己的程序计数器。
  • Java虚拟栈:存放基本数据类型、对象引用以及方法出口等数据。它也是线程私有的,每个线程都有自己的虚拟栈。
  • Native方法栈:与Java虚拟栈相似,但它专门为Native方法服务。也是线程私有的,用于执行本地方法。
  • Java堆:是Java内存中最大的一块,用于存放所有的对象实例和数组。Java堆是垃圾收集器的主要工作区域,所有的垃圾收集都是在这里进行的。Java堆是线程共享的内存区域。
  • 方法区:存放已被加载的类信息、常量、静态变量以及即时编译器编译后的代码数据等。也称为永久代,但在较新的JVM中可能已被元空间所取代。方法区的主要回收目标是常量池的回收和类型的卸载。方法区是各个线程共享的内存区域。

三、JVM 内存为什么要分成新生代,老年代,持久代?

在这里插入图片描述

在Java虚拟机中,内存被划分为几个区域,其中包括持久代和堆。持久代主要用于存放方法区和一些其他的数据。而堆则包括了新生代和老年代。

新生代和老年代 Java堆被划分为新生代和老年代。新生代是存放刚创建的对象的地方,而老年代则是存放已经存在一段时间且存活时间较长的对象。

Survivor区的作用 Survivor区主要是为了帮助管理新生代的内存。如果没有Survivor区,新生代的Eden区每次进行垃圾回收时都会把存活的对象移到老年代,这会导致老年代很快被填满,触发大规模的垃圾回收。为了避免这种情况,引入了Survivor区。Survivor区的存在能够减少被送到老年代的对象,进而减少大规模垃圾回收的发生。

为什么要设置两个Survivor区 设置两个Survivor区最主要的目的是为了解决内存碎片化问题。当新生代的Eden区满了之后,存活的对象会被移动到第一个Survivor区。随着新的对象不断被创建和销毁,Eden区和第一个Survivor区的内存会逐渐被占满。当这两个区域再次满了之后,会触发一次垃圾回收,这时会把Eden区和第一个Survivor区中的存活对象移到第二个Survivor区,同时清空Eden区。这个过程的重要性在于,这种移动对象的方式保证了第二个Survivor区中来自Eden区和第一个Survivor区的存活对象在内存中是连续的,避免了内存碎片化的问题。

四、JVM如何优化?

1.1 堆栈相关配置

java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:MaxPermSize=16m -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxTenuringThreshold=0  

解释: -

Xmx3550m:设置最大堆大小为 3550m。

-Xms3550m:设置初始堆大小为 3550m。

-Xmn2g:设置年轻代大小为 2g。

-Xss128k:设置每个线程的堆栈大小为 128k。

-XX:MaxPermSize:设置持久代大小为 16m。

-XX:NewRatio=4:设置年轻代与年老代的大小比值为 1:4(不包括持久代)。

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值为 1:4。 如果SurvivorRatio为4,则两个Survivor区与一个Eden区的大小比值为 2:4,一个Survivor区占整个年轻代的 1/6。

-XX:MaxTenuringThreshold=0:设置对象在年轻代中的最大年龄。如果设置为0,则年轻代对象不经过Survivor区,直接进入年老代。

1.2 垃圾收集器相关配置

-XX:+UseParallelGC:选择并行垃圾收集器,这种收集器会使用多个线程并行地进行垃圾回收操作。

-XX:ParallelGCThreads=20:配置并行收集器使用的线程数为20,这样可以充分利用多核处理器的性能。

-XX:+UseConcMarkSweepGC:设置年老代使用并发标记-清除收集器,这种收集器允许垃圾回收和应用程序线程同时运行,减少了停顿时间。

-XX:CMSFullGCsBeforeCompaction=5:配置在对年老代进行压缩整理之前触发多少次Full GC。这个参数指定了在进行内存整理之前,需要进行多少次Full GC操作。

-XX:+UseCMSCompactAtFullCollection:开启在Full GC时对年老代进行压缩整理。虽然可能会略微影响性能,但可以帮助消除内存碎片,从而提高内存的利用效率。

五、结尾

感谢您的观看! 如果本文对您有帮助,麻烦用您发财的小手点个三连吧!您的支持就是作者前进的最大动力!再次感谢!

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

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

相关文章

综合知识篇13-软件开发模型考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

小程序应用市场的前世今生

最开始的开始,为软件开发者提供软件发布、运营和推广服务的平台称之为软件应用市场,其发展经历了以下3个阶段: 起源阶段:应用市场的起源可以追溯到桌面互联网时代,当时软件的开发和分发主要依靠软件网站。软件开发者可…

【C语言】【牛客】BC136 KiKi判断上三角矩阵

文章目录 题目 BC136 KiKi判断上三角矩阵思路代码呈现 题目 BC136 KiKi判断上三角矩阵 链接: link 思路 这题很简单但是再牛客中属于中等题 我们通过读题发现 2<n<10 &#xff0c;所以我们首先创建一个变量 n 以及一个 10*10 个元素数组 然后题目是判断该矩阵是否是…

windows下常用的DOS命令

DOS&#xff08;Disk Operating System&#xff09;是 Windows 操作系统中的命令行接口&#xff0c;也可以叫命令行窗口。一提到这个&#xff0c;很多初入行计算机的朋友们就是很犯怵&#xff0c;不知所错&#xff0c;好高端&#xff0c;有没有。界面如下&#xff1a; 普通用户…

联想笔记本的声音键没有反应怎么办?

如果我的联想笔记本电脑上的声音按钮没有响应&#xff0c;该怎么办&#xff1f; 如果我的联想笔记本电脑上的声音按钮没有响应&#xff0c;该怎么办&#xff1f; 按下按钮后我无法控制声音。 我该怎么办&#xff1f; 以下是我为您整理的关于联想笔记本声音按键无反应的相关资料…

流畅的 Python 第二版(GPT 重译)(九)

第四部分&#xff1a;控制流 第十七章&#xff1a;迭代器、生成器和经典协程 当我在我的程序中看到模式时&#xff0c;我认为这是一个麻烦的迹象。程序的形状应该只反映它需要解决的问题。代码中的任何其他规律性对我来说都是一个迹象&#xff0c;至少对我来说&#xff0c;这表…

01分布式搜索引擎ES

分布式搜索引擎ES 1.初识elasticsearch1.1.了解ES1.2.倒排索引1.3.es的一些概念 2.索引库操作2.1.mapping映射属性2.2.索引库的CRUD 3.文档操作3.1.新增文档3.2.查询文档3.3.删除文档3.4.修改文档3.5.总结 4.RestAPI4.0.导入Demo工程4.1.创建索引库4.2.删除索引库4.3.判断索引库…

CodeWhisperer插件

一、前言 产品官网地址&#xff1a;What is CodeWhisperer? - CodeWhisperer Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器&#xff0c;可实时为您提供代码建议。在您编写代码时&#xff0c;CodeWhisperer 会根据您现有的代码和注释自动生成建议。您的个…

Power BI学习(数据可视化)

另一个也可以的工具是&#xff1a;Tableau 还有一个是&#xff1a;神策&#xff0c;主要是用于互联网的app的数据埋点 数据分析的过程&#xff1a; 数据源--数据清洗&#xff08;power query&#xff09;-构建指标 新建度量值&#xff08;power pivot&#xff09;-可视化&…

SecureCRT:高效安全的远程连接工具

SecureCRT是一款功能强大的终端仿真工具&#xff0c;主要用于连接和运行包括Windows、UNIX和VMS在内的远程系统。它支持多种协议&#xff0c;如SSH1、SSH2、Telnet、SFTP、Rlogin、Serial、SCP等&#xff0c;确保用户与目标设备之间的通信安全&#xff0c;并防止网络攻击和窥探…

git如何在某个commitId的状态提交到一个分支

有些时候&#xff0c;我们在使用子仓库&#xff0c;或者其他情况&#xff0c;会有一个状态是当前的git仓库是在一个commitId上&#xff0c;而没有在一个分支上&#xff1a; 这时如果想要把基于这个commitId创建一个分支&#xff0c;可以使用下面这个命令&#xff1a; git push…

ReaLTaiizor开源.NET winform控件库学习使用

一、ReaLTaiizor项目介绍 1.1 介绍及地址 基于MIT license开源、免费、美观的.NET WinForm UI控件库&#xff1a;ReaLTaiizor ReaLTaiizor是一个开源免费的.NET WinForms控件库&#xff0c;它提供了广泛的组件和丰富的主题选项&#xff08;用户友好、注重设计&#xff09;&am…

ping 通ip,ping 不通域名

在linux 系统中&#xff0c;ping 通ip,ping 不通对应的域名时&#xff0c;可直接修改系统配置文件 vi /etc/hosts 加入 ip 域名

数据分析的具体流程

1.导入 表格导入数据时要注意数据的格式问题非表格导入 可以先将文档放入word中 将换行符&#xff08;^p&#xff09;替换为|||&#xff0c;选择特殊格式中的段落标记 进行全部替换 以每一列最后的数据/平&#xff0c;作为换行的标志 将所整理的信息导入excel,对数据进行分列 选…

海外云手机如何帮助亚马逊引流?

随着全球化的推进&#xff0c;出海企业和B2B外贸企业越来越注重海外市场的开拓&#xff0c;这已成为企业争夺市场份额的重要策略。本文将重点探讨海外云手机在优化亚马逊店铺引流方面的作用和优势。 海外云手机是一种在云端运行的虚拟手机&#xff0c;能够在单一芯片上多开几个…

简单记录一次帮维修手机经历(Vivo x9)

简介 手边有一台朋友亲戚之前坏掉的Vivo X9手机&#xff0c; 一直说要我帮忙修理一下&#xff0c; 我一直是拒绝的&#xff0c; 因为搞程序的不等于维修的&#xff08;会电脑不等于维修电器&#xff09;&#xff0c;不知道这种思路如何根深蒂固的&#xff0c;不过好吧&#xff…

uniapp、vue2.6、H5,利用腾讯TRTC,快速跑通1v1视频功能

多人视频聊天室搭建&#xff0c;官网已有相关demo和案例&#xff0c;需要快速搭建多人聊天室直接进入以下网站&#xff1a; 实时音视频 Web & H5 (Vue2/Vue3)-视频通话&#xff08;含 UI&#xff09;-文档中心-腾讯云说明&#xff1a;https://cloud.tencent.com/document/…

区块链革命:探索 Web3 的全球影响

引言 自比特币的诞生以来&#xff0c;区块链技术已经成为全球范围内备受瞩目的创新之一。其去中心化、不可篡改、透明的特性不仅使其成为数字货币领域的核心技术&#xff0c;还在金融、供应链管理、智能合约等领域展现出了巨大的应用潜力。随着区块链技术的不断发展&#xff0…

【运维笔记】VM 记录一次centos虚拟机和宿主机之间ping不通的问题

问题描述 环境&#xff1a;centos7&#xff0c;静态ipVM版本&#xff1a;VMware Workstation 16 pro&#xff0c;网络为nat映射模式问题&#xff1a; 一开始&#xff0c;虚拟机可以ping通宿主机&#xff0c;也可以ping通&#xff0c;也可以ping通外网&#xff08;如 ping www.…

【动态三维重建】Deformable 3D Gaussians 可变形3D GS用于单目动态场景重建(CVPR 2024)

主页&#xff1a;https://ingra14m.github.io/Deformable-Gaussians/ 代码&#xff1a;https://github.com/ingra14m/Deformable-3D-Gaussians 论文&#xff1a;https://arxiv.org/abs/2309.13101 文章目录 摘要一、前言二、相关工作2.1 动态场景的神经渲染2.2 神经渲染加速 三…