CPU350% JVM GC频繁并GC不掉EXCEL导出

背景:

        有个Excel导出的需求,测试的时候,只要连续导出大量的数据就会导致FAT机器反请求反应迟钝,甚至卡死,无法恢复。

排查:

        1 跳板机跳到机器上,查看 项目 ipd  执行ps -ef | grep  项目名称.jar  查看后PID  执行 top -p PID ,查看cpu内存占用,CPU 占用百分之350%左右。

        2 查看内存使用较高,查看gc日志log,tail -f gc.log  发现 一直频繁YGC

        3 下载 JProFiler Java JVM分析利器JProfiler 结合IDEA使用详细教程_jprofiler使用教程-CSDN博客

        4 本地启动项目并测试排查,发现占用JVM不能释放的如图 char 和 string 是因为 ZprojeectBo 实体里的数据

        5 排查代码发现 实体ZProjeectBO 是Excel导出的主要实体,也就是所有excel导出的数据都在里面,并且是做了分页的,按道理不应该占用那摩多内存,但深入排查代码发现

//伪代码
List<ZProjeectBO> zp = new List<>;for(每一页){zp = 查每一页()//写入 excel
}
//这里页数多了 或者 zp数据太多  就会导致GC不掉
//因为 循环中 zp 虽然每次 重新赋值 但是在for循环里面不会被回收

解决方案:再循环中 极爱如 zp = null   和 System.gc();

        6 然后 再次测试 已经有很大改善 

但 AttrXobj 和ElemenXob 占用多 并且 老年代直接爆满

经过 百度 https://zhuanlan.zhihu.com/p/367119379 查到原因是因为excel当前使用的导出 ,如果导出数据过多有OOM的问题

解决方案:改成 SXSSFWorkbook 代替 或者其他 能对大量excel导出 数据写入文件而不是内存的,就能解决 内存释放不掉问题。

改完

----------------------------chenchen-----------------------------

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

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

相关文章

23.rabbitmq幂等性

介绍 用户对同一操作发起的一次请求或多次请求的结果是一致的。 方式用户重复提交。 也就是消息被重复消费了。 消费者在消费mq中的消息时&#xff0c;mq已经把消息发送给消费者&#xff0c;消费者在给mq返回ack时网络中断&#xff0c;故mq未收到确认消息&#xff0c;该条消…

Python面试题:结合Python技术,如何使用SQLAlchemy进行数据库操作

使用SQLAlchemy进行数据库操作是一种非常灵活和强大的方式&#xff0c;它支持多种关系型数据库&#xff0c;并提供了ORM&#xff08;对象关系映射&#xff09;和核心&#xff08;SQL Expression Language&#xff09;两种使用方法。以下是详细的步骤和示例&#xff0c;展示如何…

虚拟机Ubuntu20.04 利用串口调试机械臂

虚拟机Ubuntu20.04 利用串口调试机械臂 串口库问题 由于机械臂使用的是串口进行驱动控制&#xff0c;在python中相关的串口库为serial和pyserial两个&#xff0c;这里我曾踩过雷同时安装了serial与pyserial两个库&#xff0c;导致报错如下所示&#xff1a; AttributeError: m…

数据结构:(1)线性表

一、基本概念 概念&#xff1a;零个或多个数据元素的有限序列 元素之间是有顺序了。如果存在多个元素&#xff0c;第一个元素无前驱&#xff0c;最后一个没有后继&#xff0c;其他的元素只有一个前驱和一个后继。 当线性表元素的个数n&#xff08;n>0&am…

c++中grpc简单使用---函数介绍及其代码演示

前言 C gRPC&#xff08;Google Remote Procedure Call&#xff09;是一种高性能、开源的远程过程调用框架&#xff0c;用于在不同服务之间进行通信。 配置gRPC可以访问该网站&#xff1a;grpc配置 一.函数介绍 下面是一些常见的 C gRPC 函数及其功能&#xff1a; grpc::Cha…

Centos的YUM源

可以使用以下几个常见的YUM源&#xff0c;这些源通常具有较快的速度和较高的可用性&#xff1a; 阿里云 (Aliyun) [aliyun] nameAliyun mirrors baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG…

使用Spring Boot与Spire.Doc实现Word文档的多样化操作

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 使用Spring Boot与Spire.Doc实现Word文档的多样化操作具有以下优势&#xff1a; 强大的功能组合&#xff1a;Spring Boot提供了快速构建独立和生产级的Spring应用程序的能力&#xff0c;而Spire.Doc则…

【Golang 面试 - 进阶题】每日 3 题(二)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

【Docker】搭建实用的内网穿透工具 - FRP

前言 本教程基于群晖的NAS设备DS423+的docker功能进行搭建FRP的客户端,DSM版本为 7.2.1-69057 Update 5。采用香港机Debian 12系统的服务器来安装FRP的服务端作为演示。 服务器购买地址:https://www.crash.work/aff/AQXGDNKY 简介 FRP(Fast Reverse Proxy)是一个高性能…

OSError: You are trying to access a gated repo.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

『 Linux 』用户态与内核态的转换机制及信号检测时机

文章目录 用户态与内核态进程地址空间操作系统的本质 信号的处理时机 用户态与内核态 进程在执行代码的过程中代码必定涉及用户代码,库函数代码及操作系统内核代码; 以简单的printf()函数为例,该函数必定为先执行用户的代码即知道需要调用printf()函数,再执行库(如libc)中的代码…

这六种灯千万别买了!看你踩了几个坑

雅静说啥样的灯买了才发现是个坑      给你说6个,安上就会后悔的      1,这些变色的灯就别要了,说的是三色温灯,买回家才发现      它的白光,暖光,中性光,我们习惯只用一种,开,关,开,关,开5次      才能调到自己想要的档位,不想患上关节炎就别买这种了     …

Java线程同步与通信:wait(), notify(), notifyAll(), sleep()

Java线程同步与通信&#xff1a;wait&#xff08;&#xff09;, notify&#xff08;&#xff09;, notifyAll&#xff08;&#xff09;, sleep&#xff08;&#xff09; 1. wait()2. notify()3. notifyAll()4. sleep()4、总结 &#x1f496;The Begin&#x1f496;点点关注&…

一文带你读懂TCP

文章目录 1 TCP协议1.1 TCP 基础1.1.1 TCP 特性1.2.2 TCP连接数 1.2 TCP 头1.2.1 TCP 头格式1.2.2 MTU&#xff0c;MSS&#xff0c;分片传输 1.3 TCP 连接三路握手1.4 TCP 断开四次挥手1.5 SYN攻击和防范1.6 重传机制1.6.1 超时重传1.6.2 快速重传1.6.3 SACK 1.7 滑动窗口1.8 流…

微信小程序根据动态权限展示tabbar

微信小程序自定义 TabBar 后根据权限动态展示tabbar 在微信小程序开发中,自定义 TabBar 可以让应用更具灵活性和个性化。特别是在用户根据不同权限展示不同的 TabBar 内容时,正确的实现方法能够提升用户体验。本篇文章将分享如何使用事件总线实现权限变动时动态更新自定义 T…

软件环境安装-通过Docker安装rabbitmq

软件环境安装-通过Docker安装rabbitmq 一、拉取镜像二、启动三、安装延迟队列插件 一、拉取镜像 docker pull rabbitmq:3.9.0-management二、启动 docker run -d --namerabbitmq --restartalways -p 5672:5672 -p 15672:15672 rabbitmq:3.9.0-management 三、安装延迟队列插…

Linux基础复习(二)

前言 本文介绍了一下Linux命令行基本操作及网络配置 一、 命令行提示含义 [当前用户主机名 工作目录]$ 若当前用户是root&#xff0c;则最后一个字符为# 否则&#xff0c;最后一个字符为$ 二、常用Linux命令及其解释 修改主机名 一般在创建一台主机后会使用hostname相关命…

在生信分析中大家需要特别注意的事情​

在生信分析中大家需要特别注意的事情 标准的软件使用和数据分析流程 1. 先看我的b站教学视频 2. 先从我的百度网盘把演示数据集下载下来&#xff0c;先把要运行的模块的演示数据集先运行一遍 3. 前两步都做完了&#xff0c;演示数据集也运行成功了&#xff0c;并且知道了软件…

服务器构建私有npm库(Docker + Verdaccio)

npm官网有时候因为网络原因包推不上去&#xff0c;那就简单构建个私有库 私有库不会被共享&#xff0c;且配置不需要太高1h2G就行 1.需要安装Docker&#xff0c;这个跳过了 2.生成配置文件 mkdir /home/verdaccio cd /home/verdaccio mkdir conf && mkdir storage &am…

ajax请求成功但不执行success-function回调函数

目录 一、问题分析 二、处理问题 一、问题分析 在测试员工管理系统的登录和注册代码时&#xff0c;登录一切正常&#xff0c;就是注册成功后没有跳转页面&#xff0c;后面发现是success-function回调函数没有正常执行。原因主要是前端和后端交流的数据格式不一致&#xff0c;…