JVM 调优篇7 调优案例2-元空间的优化解决

一  元空间

1.1 功能概述

方法区(Method Area)与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、即时编译器编译后的代码等数据。虽然Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 Non-Heap(非堆),目的应该是与 Java 堆区分开来。

垃圾收集行为在这个区域是比较少出现的,其内存回收目标主要是针对常量池的回收和对类型的卸载。当方法区无法满足内存分配需求时,将抛出 OutOfMemoryError 异常。

二  案例实操优化

2.1 代码

2.2 参数设置

1.参数:

-XX:+PrintGCDetails -XX:MetaspaceSize=60m -XX:MaxMetaspaceSize=60m -Xss512K -XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=e:/heapdumpMeta.hprof  -XX:SurvivorRatio=8 -Xms60M  -Xmx60M -Xloggc:e:/gc-oomMeta.log

2.3 启动

2.4 通过vm分析

2.4.1 实时查看

1.通过命令 jstat 查看堆变化:  设置的元空间60m,已经几乎用尽。几乎把整个方法区空间占用,所以得出的结论是方法区空间设置过小,或者存在大量由于反射生成的代理类

 查看堆内存变化

2.4.2 离线分析

读取dump文件

1.基本信息

2.oom信息

查看对象信息: 

1.运行期间生成了大量的代理类,导致方法区被撑爆,无法卸载

2. 应用长时间运行,没有重启

3. 元空间内存设置过小

2.4.3 优化解决

优化代码:将相同对象,就不再通过invoke,反射机制进行创建,放到缓存中。

enhancer.setUseCache(false),选择为true的话,使用和更新一类具有相同属性生成的类的静态缓存,而不会在同一个类文件还继续被动态加载并视为不同的类,这个其实跟类的equals()和hashCode()有关,它们是与cglib内部的class cache的key相关的。

查看结果:可以看到,几乎不变了,方法区也没有溢出。到此,问题基本解决

没有报oom异常,所以没有dump文件生成

查看堆动态变化:jstat -gc 4656 1000 5

查看vm

2.5 原因以及解决方案*

原因:

1.运行期间生成了大量的代理类,导致方法区被撑爆,无法卸载

2. 应用长时间运行,没有重启

3. 元空间内存设置过小

解决办法:

1. 检查是否永久代空间或者元空间设置的过小

2. 检查代码中是否存在大量的反射操作

3. dump之后通过mat检查是否存在大量由于反射生成的代理类

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

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

相关文章

【操作系统】二、进程管理:4.死锁(银行家算法、系统安全状态、静态分配策略、资源有序分配法)

五、死锁 文章目录 五、死锁1.产生1.1产生情况1.2产生的4个必要条件 2.处理方式2.1预防死锁2.1.1破坏互斥条件2.1.2破坏请求和保持条件2.1.3破坏不可抢占条件2.1.4破坏循环等待条件 2.2避免死锁2.2.1系统安全状态❗2.2.2银行家算法 2.3检测死锁2.4解除死锁 死锁:资源…

ubuntu安装wordpress(基于LNMP环境)

参考链接 Ubuntu安装LNMP 安装步骤 环境需要LNMP环境,如果没有安装可以参考ZATA—LNMP简单安装 在mysql中设置wordpress所用的用户名和密码 #1. 登录mysql mysql -uroot -p #2. 创建wordpress数据库 create database wordpress; #3. 创建新用户user,…

使用Java实现一个简单的B树

1.B树简介 B树是一个搜索树,数据结构可以抽象成如二叉树一样的树,不过它有平衡、有序、多路的特点。 平衡:所有叶子节点都在同一层。有序:任一元素的左子树都小于它,右子树都大于它。多路:B树的每个节点最多…

【Linux】文件权限与类型全解:你的文件安全指南

欢迎来到 CILMY23 的博客 🏆本篇主题为:文件权限与类型全解:你的文件安全指南 🏆个人主页:CILMY23-CSDN博客 🏆系列专栏:Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题…

激光雷达点云处理—学习随记

一、激光雷达基本概念 激光雷达(Light Detection and Ranging,LiDAR),是一种发射激光(可见光-近红外)于被瞄准物体表面并记录反射光被信号接收器接收到的时间以测定距离的方法。激光雷达通过以下公式确定物…

基于springboot酒店管理系统

酒店管理系统 552酒店管理系统 摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,…

【MySQL】查询语句之inner、left、right、full join 的区别

前言: INNER JOIN 和 OUTER JOIN 是SQL中常用的两种连接方式,用于从两表活多表中提取相关的数据。两者区别主要在于返回的 结果集 如何处理 匹配 与 不匹配 的行。 目录 1、INNER JOIN 2、OUTER JOIN 3、总结 1、INNER JOIN 称为内连接,只…

【Python机器学习】NLP信息提取——命名实体与关系

我们希望计算机能够从文本中提取信息和事实,从而略微理解用户所说的内容。例如,当用户说“提醒我星期一浏览***.org网站”,我们希望这句话触发当天后下一个周一的日程或者提醒的操作。 要触发上述操作,需要知道“我”代表一种特定…

5.内容创作的未来:ChatGPT如何辅助写作(5/10)

引言 在信息爆炸的时代,内容创作已成为连接品牌与受众、传递信息与知识、以及塑造文化与观念的重要手段。随着数字媒体的兴起,内容创作的需求日益增长,对创作者的写作速度和质量提出了更高的要求。人工智能(AI)技术的…

感谢问界M9一打二十,让我们买到这么便宜的BBA

文 | AUTO芯球 作者 | 雷慢 国产豪华车,终于扬眉吐气了, 你敢信吗?在50万以上豪华车中, 现在问界M9一款车的月销量, 是其他前20名销量的总和! 要知道,它的对手是各种宝马、奔驰、雷克萨斯的…

私有化通讯工具:安全、高效、个性化,重塑企业沟通生态

在当今数字化时代,即时通讯已成为企业日常运营中不可或缺的一部分。随着数据安全和隐私保护意识的日益增强,越来越多的企业开始寻求更加安全、可控的沟通方式。私有化聊天工具应运而生,以其独特的核心优势,为企业构建了一个安全、…

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览

VMware vSphere 8.0 Update 3b 发布下载,新增功能概览 vSphere 8.0U3 | ESXi 8.0U3 & vCenter Server 8.0U3 请访问原文链接:https://sysin.org/blog/vmware-vsphere-8-u3/,查看最新版。原创作品,转载请保留出处。 作者主页…

【Leetcode】70. 爬楼梯

题目来源 70. 爬楼梯 题目描述 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶…

webpack5 构建优化方案看这篇就够了!【Node.js进阶】

无论在面试还是内部晋升,webpack 构建优化方案 一直都是非常重要的部分。 webpack5构建加持 一、项目完成目标二、搭建项目1. 安装koa、koa/router (如果已经配置可路过)2. 创建入口文件3. 安装构建依赖4. 在项目根目录添加 .babelrc 文件5. …

一般在写SQL时需要注意哪些问题,可以提高查询的效率?

很多人写SQL按照自己喜好,没有规则意识,这对于自主查询影响不大,你爱怎么搞就怎么搞,一旦涉及到提交任务或团队共享,就不能乱写了,会浪费资源影响到开发效率,严重的甚至会服务器瘫痪。 提几个关…

进程的重要函数

进程的重要函数: fork函数 了解fork函数 通过调用fork()函数&#xff0c;则会产生一个新的进程。调用fork()函数的进程叫做 父进程&#xff0c;产生的新进程则为子进程。 其编码过程: 1.函数功能: 函数头文件 #include <sys/types.h> #include <unistd.h> 函数…

运用Java实现倒计时功能

这个功能其实是比较好实现的&#xff0c;一般来说java中实现倒计时有两种方法&#xff1a; 1、使用 scheduledexecutorservice创建一个可重复执行的任务&#xff0c;直到时间到&#xff1a; ScheduledExecutorService 是 Java 中一种用于安排延迟或定期任务的工具。我们可以使…

云计算第四阶段------CLOUD Day4---Day6

Cloud DAY4 项目架构图&#xff1a; 环境准备&#xff1a; 主机名称IP地址配置logstash192.168.1.27最低配置4核8G #书接上文&#xff0c;我们在华为云平台租了几台云服务器&#xff0c;这次买一台性能好的服务器&#xff0c;作为logstash软件部署的载体。 今天给小伙伴们带来…

低代码门户技术:构建高效应用的全新方式

什么是低代码门户技术&#xff1f; 低代码门户技术是一种利用低代码平台构建企业门户网站或应用的技术。门户通常是企业内部和外部用户访问信息和应用的集中平台。低代码门户技术通过图形化界面和预置组件&#xff0c;允许用户快速搭建和定制这些门户平台&#xff0c;而无需深…

TCP并发服务器的实现

一请求一线程 问题 当客户端数量较多时&#xff0c;使用单独线程为每个客户端处理请求可能导致系统资源的消耗过大和性能瓶颈。 资源消耗&#xff1a; 线程创建和管理开销&#xff1a;每个线程都有其创建和销毁的开销&#xff0c;特别是在高并发环境中&#xff0c;这种开销…