项目中,有个同事写的JOB,使用到查询数据库大量历史协议数据(大概300W左右),由于对存放数据的list或map没有做“用完即时声明释放”。

导致此Jar部署在windows service后,进程的内存资源一直居高不下,而且多次执行后,JVM内存终于增长超过最大JVM内存设置max=3GB,

从而导致程序报错“内存溢出OutOfMemoryException”提示。

解决思路如下:

1. 修改代码中:大数据的list和map的用完之后,增加声明释放资源代码:list.clear()和list =null;

2. 修改jvm命令:增加jvm管理GC回收策略的参数,如:-Xmx2048m -XX:MaxGCPauseMillis=100 -XX:+UseParallelOldGC -XX:+UseParallelGC

然后,删除之前注册的windows service (寄宿jar的java程序),重新注册和启动jar的windows service服务,测试结果发现:

此JOB的jvm内存使用就会自动在list和map使用完毕之后,快速回收占用的内存资源。

并且不管多次运行JOB,也不会提示内存溢出的异常。

图1:修改前,每次执行完JOB,其进程的内存资源一直没有释放,如下图

图2:修改后,每次执行完JOB,其进程的内存资源会快速释放,如下图

一次JVM内存调优过程的更多相关文章

  1. 我进行jvm内存调优的一些记录

    jvm内存调优的一些记录 java内存调优的方法和过程 可以使用 jmap -heap pid号 查看,例如pid是9300,执行的结果可能是这样的. root@ubuntu:~# jmap -hea ...

  2. JVM内存调优原则及几种JVM内存调优方法

      转载,如需帮助,请联系wlgchun@163.com https://blog.csdn.net/LeegooWang/article/details/88696195 如何对JVM进行内存调优? ...

  3. JVM内存调优

    JVM性能调优有很多设置,这个参考JVM参数即可. 主要调优的目的: 控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为 控制JVM堆栈大 ...

  4. 【总结】性能调优:JVM内存调优相关文章

    [总结]性能调优:JVM内存诊断工具 [总结]性能调优:CPU消耗分析 [总结]性能调优:消耗分析 JVM性能调优

  5. JAVA系列之JVM内存调优

    一.前提 JVM性能调优牵扯到各方面的取舍与平衡,往往是牵一发而动全身,需要全盘考虑各方面的影响.在优化时候,切勿凭感觉或经验主义进行调整,而是需要通过系统运行的客观数据指标,不断找到最优解.同时,在 ...

  6. JVM 内存调优 与 实际案例

    堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...

  7. tomcat jvm 内存调优 适用于 JDK 6 & 7

    参考:https://blog.csdn.net/m0_37327416/article/details/76185051 1.jvm内存管理机制: 1)堆(Heap)和非堆(Non-heap)内存 ...

  8. java_opts 参数与JVM内存调优

    Linux修改catalina.sh文件 如: JAVA_OPTS=”-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSize=12 ...

  9. tomcat增加内存 JVM内存调优

    tomcat总是卡死,查看日志catalina.out 发现疯狂报错 如下,提示内存溢出 java.lang.OutOfMemoryError: Java heap space 此外常见的内存溢出有以 ...

随机推荐

  1. Maximum Product Subarray 最大连续乘积子集

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  2. python基础——操作系统简介

    不同应用领域的主流操作系统 l  桌面操作系统 l  服务器操作系统 l  嵌入式操作系统 l  移动设备操作系统 桌面操作系统 Windows系列 用户群体很大 MacOS 适合于开发人员 Linu ...

  3. August 15th 2017 Week 33rd Tuesday

    Would rather have done a regret, do not miss the regret. 宁愿做过了后悔,也不要错过了后悔. Yesterday, I read several ...

  4. BZOJ 1050 旅行comf 并查集+枚举下界

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1050 题目大意: 给你一个无向图,N(N<=500)个顶点, M(M<=5 ...

  5. flume MemoryChannel 源代码解析

    1.先分析三个LinkedBlockingDeque<Event>类型的takeList,putList,queue putList:  存放的是来自source生产的数据,通过调用doP ...

  6. z-index终结者

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangshuxuncom/article/details/30280627         z-in ...

  7. appium 环境安装windows

    创建AVD -c  --sdcard  : 指向一个共享的SD存储卡的路径,或者是新的SD储存卡容量大小. -n  --name    : AVD的名字(该项是必须的) -a  --snapshot ...

  8. [运维笔记] Nginx编译安装

    yum -y install pcre-devel.x86_64 yum -y install openssl openssl-devel.x86_64 useradd www -s /sbin/no ...

  9. javascrict中innerhtml和innerText的关系

    1.time.innerHTML 就是id为time的标签中所有包含的代码内容 比如 <div id='time'><a href='#'>time</a>< ...

  10. ajax几种请求几种类型

    jquery向服务器发送一个ajax请求后,可以返回多种类型的数据格式,包括:html,xml,json,text等. 首先说一下jquery中ajax标准的格式. $.ajax({ url: &qu ...