大厂面试题-JVM为什么使用元空间替换了永久代?

news2024/11/17 12:45:25

目录

面试解析

问题答案


面试解

我们都知道Java8以及以后的本中,JVM运行时数据区的结构都在慢慢调整和优化。但实上这些变化,对于业务开发的小伙伴来说,没有任何影响。

因此我可以说,99%的人都回答不出这个问题。

但是互联网大厂的面试就是筛选那1%的优秀人才,因此通过这道题

    1、既可以考察求职者对JVM原理的理解程度

    2、又能够考察求职者基本功的扎实程度

    3、还能实现高级人才的筛

在Java7里面,JVM运行时数据区是这样的(如图)。

Hotspot虚拟机中,方法区的实现是在永久代里面,它里面主要存储运行时常量池、Klass类元息等。

永久代属于JVM运行时内存中的一块储空间,我们可以通过-XX:PermSize来设置永久代的大小。

存不够的时候,会触发垃圾回收。

JDK1.8面,JVM运行时数据区是这样的(如图)

Hotspot虚拟机中,取消了永久代,由元空间来实现方法区的数据存储。

元空不属于JVM内存,而是直接使用本地内存,因此不需要考虑GC问题。

默认情下元空间是可以无限制的使用本地内存的,但是我们也可以使用JVM参数来限制内存使用大小。

为什么要使用元空间来替换永久代,背后必然有它的道理,但是如果求职者能够回答出来。

必然对于JVM底层原理是有一定了解的。

题答案

有三个方面的原因:

    1、在1.7版本里面,永久代内存是有上限的,虽然我们可以通过参数来设置,但是JVM加载的class总数、大小是很难确定的。所以很容易出现OOM问题。

是元空间是存储在本地内存里面,内存上限比较大,可以很好的避免这个问题。

    2、永久代的对象是通过FullGC进行垃圾收集,也就是和老年代同时实现垃圾收集。替换成元空间以后,简化了Full GC。可以在不进行暂停的情况下并发地释放类数据,同时也提升了GC的性能

    3、Oracle要合并Hotspot和JRockit的代码,而JRockit没有永久代。

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

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

相关文章

AI类APP上线需要注意的问题

上线AI类应用程序需要考虑一系列重要问题,以确保应用程序的顺利运行、用户满意度和法规遵从。以下是在上线AI应用程序时需要注意的关键问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

目标识别、目标追踪等计算机视觉技术在视频监控领域的应用

随着科技的不断进步和发展,人们的科技意识也在不断提高,人工智能技术也在逐渐改变着人类的生产和生活方式,尤其是在安防监控领域,人工智能技术的落地应用越来越多。 计算机视觉技术是指设备能够“看到”它正在进行的操作&#xf…

【python画画】蘑菇云爱心

来源于网上短视频 数学原理不懂,图个乐 import math from turtle import *def x(i):return 15 * math.sin(i) ** 3 * 20def y(i):return 20 * (12 * math.cos(i) - 5 * math.cos(2 * i) - 2 * math.cos(4 * i))speed(0) color(red) pensize(10) for i in range(51…

安全狗安装

安装waf 关闭apache程序及httpd.exe进程; 运行cmd,cd进入apache/bin文件夹目录, 执行httpd.exe -k install -n apache2.4.39; 启动apache,启动phpstudy 安全狗安装服务名称填写apache2.4.39; 安装安全狗之后就会提示报错 网站防护 可以设备黑白名单 漏…

ChatGLM系列六:基于知识库的问答

1、安装milvus 下载milvus-standalone-docker-compose.yml并保存为docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.3.2/milvus-standalone-docker-compose.yml -O docker-compose.yml运行milvus sudo docker-compose up -d2、文档预处理…

华为云1核2G2M带宽HECS云服务器价格和性能测评

华为云1核2G2M带宽HECS云服务器优惠价一年51元,高IO_40G系统盘,自带独立公网IP地址,可选北京、乌兰察布、上海和广州地域,华为云1核2G2M带宽服务器适用于小型网站、软件及应用。活动链接:atengyun.com/go/huawei 活动打…

在Win11上部署ChatGLM2-6B详细步骤--(下)开始部署

接上一章《在Win11上部署ChatGLM2-6B详细步骤--(上)准备工作》 这一节我们开始进行ChatGLM2-6B的部署 三:创建虚拟环境 1、找开cmd执行 conda create -n ChatGLM2-6B python3.8 2、激活ChatGLM2-6B conda activate ChatGLM2-6B 3、下载…

echarts将展示全天的数据,如一天的电费,一个停车场一天的饱和度等问题

项目场景: 我们的项目是通过ai识别停车场的停车数,来展示此停车场全天的饱和度,如下 问题描述 后台接口给的数据,就是这种,返回所有有停车数量的时间段,但是我们的x轴要求展示全天的数据,并且可伸缩刻度展示具体时间的停车情况 [{time:2023-10-27 08:20:20,carS…

vue的双向绑定的原理,和angular的对比

目录 前言 Vue的双向绑定用法 代码 Vue的双向绑定原理 Angular的双向绑定用法 代码 Angular的双向绑定原理 理解 图片 关于Vue的双向绑定原理和与Angular的对比,我们可以从以下几个方面进行深入探讨: 前言 双向绑定是现代前端框架的核心特性之…

【sql】sql中true,false 和 null之间and、or运算的理解。

select true and null "tan",false and null "fan",true or null "ton",false or null "fon";结果如下: 怎么理解呢? 很简单,把null当做介于true和false中间的值,也就是如果true1,false…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

1、在vscode终端执行 get-ExecutionPolicy ,显示Restricted,说明状态是禁止的。 2、更改状态: set-ExecutionPolicy RemoteSigned 出现需要管理员权限提示,可选择执行 Set-ExecutionPolicy -Scope CurrentUser 出现的ExecutionPolicy参数后输…

《ATTCK视角下的红蓝对抗实战指南》一本书构建完整攻防知识体系

一. 网络安全现状趋势分析 根据中国互联网络信息中心(CNNIC)发布的第51次《中国互联网络发展状况统计报告》,截至2022年12月,我国网民规模为10.67亿,互联网普及率达75.6%。我国有潜力建设全球规模最大、应用渗透最强的…

【AI视野·今日NLP 自然语言处理论文速览 第五十七期】Wed, 18 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 18 Oct 2023 Totally 82 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers VeRA: Vector-based Random Matrix Adaptation Authors Dawid Jan Kopiczko, Tijmen Blankevoort, Yuki Marku…

使用 RAG、Langchain 和 Streamlit 制作用于文档问答的 AI 聊天机器人

在这篇文章中,我们将探索创建一个简单但有效的聊天机器人,该机器人根据上传的 PDF 或文本文件的内容响应查询。该聊天机器人使用 Langchain、FAISS 和 OpenAI 的 GPT-4 构建,将为文档查询提供友好的界面,同时保持对话上下文完整。…

EtherCAT转Profinet协议网关使西门子和倍福的PLC实现通讯的方法

通过倍福PLC协议,远创智控YC-ECTM-PN网关能与倍福系列的PLC进行通信,一起探索下如何操作吧。 1.网关通过网线和倍福 PLC、电脑进行连接,如果网口不够,可以使用交换机连接。 开VS软件,新建一个工程,选择对应…

mac idea 解决0% classes 0% lines covered不显示,非快捷键办法

问题如下 网上说了一堆快捷键,冲突了用不了,页面按下面这样点就可以了点击no coverage就行了

高并发下的缓存击穿、雪崩、穿透和分布式锁(三)

一.缓存穿透 概念: 去查询缓存和数据库都不存在的数据,然后大量请求不存在的数据,导致数据库压力过大崩溃。 解决方案: 把不存在的数据null存入缓存,并给个短期的过期时间。 二.缓存雪崩 概念: 缓存采用…

树莓派 Qt中 QCameraInfo 无法使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、QCameraInfo 是什么?二、使用步骤1.测试代码2.解决方案2.1输入命令2.2输出 3. 成功打印了摄像头的信息 总结 前言 提示:这里可以添…

苹果秋季发布会官宣,新款Mac将搭载M3芯片,来势迅猛!

苹果宣布将于 10 月 31 日上午 8 点(北京时间)举行发布会,这次发布会的主题是「来势迅猛」,旨在为全球的苹果粉丝和科技爱好者带来令人期待的新品发布。这次发布会引人瞩目,因为它将聚焦在 Mac 系列产品以及全新的 M3 …

Spring源码解析-注册配置信息

1、注册方法概述 register(componentClasses) 注册配置类的信息。其中componentClasses 为传入的配置类class。 通过AnnotatedBeanDefinitionReader 的register(this.reader.register(componentClasses))方法。AnnotatedBeanDefinitionReader 已经注册了系统自带的处理器以及方…