1G内存JAVA程序优化
1.系统概况
查看CPU核数,记录下以便后续观察top负载。
[root@VM_0_12_centos ~]# cat /proc/cpuinfo | grep "cpu cores" | uniq
cpu cores : 1
查看内存占用情况,总内存987M,已使用483M,smartfinancialmanager程序使用内存352M,空闲内存96M。
[root@VM_0_12_centos ~]# free -mtotal used free shared buff/cache available
Mem: 984 483 96 8 404 345
Swap: 0 0 0[root@VM_0_12_centos ~]# ps aux|grep smart
root 767 0.0 0.4 52860 4436 ? Ss 7月21 0:00 /usr/sbin/smartd -n -q never
root 13528 1.5 35.8 2330960 361028 ? Sl 10:06 0:43 java -jar -server -Xms256m -Xmx256m -Xmn214m -XX:NewRatio=1 -XX:SurvivorRatio=5 -XX:TargetSurvivorRatio=90 /home/kenick/smartFinancial-manager/smartfinancialmanager.jar --jasypt.encryptor.password=kenick@2020 --spring.profiles.active=cloud
查看top,发现load average和cpu使用率都很低,而现在内存占用极高。
top - 10:57:24 up 81 days, 12:39, 3 users, load average: 0.00, 0.02, 0.00
Tasks: 114 total, 2 running, 77 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.0 us, 0.3 sy, 0.0 ni, 98.3 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1007748 total, 88484 free, 503380 used, 415884 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 345184 avail Mem
2.垃圾回收器/gc优化
查看当前使用的垃圾回收器,Mark Sweep Compact GC表示垃圾回收器使用的是CMS。
[root@VM_0_12_centos smartFinancial-manager]# jps
13528 smartfinancialmanager.jar
25304 Jps[root@VM_0_12_centos bin]# ./jmap -heap 13528
Attaching to process ID 22002, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11using thread-local object allocation.
Mark Sweep Compact GC
以下为各种垃圾回收器算法对比。
考虑到需减少内存占用,同时当前为单核CPU,尝试更换为ParallelOldGC垃圾回收器;同时调整JVM内存分配参数,虚拟机最小、最大内存都为150M,新生代初始化内存为110M,eden和survivo的比例为5,survie区利用率提高到90%,参数如下。
-server -Xms150m -Xmx150m -Xmn110m -XX:+UseParallelOldGC -XX:SurvivorRatio=5 -XX:TargetSurvivorRatio=90
堆内存分配情况如下,新生代为110M(eden为89,2个servive分别为10) ,老年代为40M。
[root@VM_0_12_centos bin]# ./jmap -heap 4804
Attaching to process ID 4804, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.131-b11using thread-local object allocation.
Parallel GC with 1 thread(s)Heap Configuration:MinHeapFreeRatio = 0MaxHeapFreeRatio = 100MaxHeapSize = 157286400 (150.0MB)NewSize = 115343360 (110.0MB)MaxNewSize = 115343360 (110.0MB)OldSize = 41943040 (40.0MB)NewRatio = 2SurvivorRatio = 5MetaspaceSize = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize = 17592186044415 MBG1HeapRegionSize = 0 (0.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 93323264 (89.0MB)used = 2273944 (2.1686019897460938MB)free = 91049320 (86.8313980102539MB)2.436631449152914% used
From Space:capacity = 11010048 (10.5MB)used = 0 (0.0MB)free = 11010048 (10.5MB)0.0% used
To Space:capacity = 10485760 (10.0MB)used = 0 (0.0MB)free = 10485760 (10.0MB)0.0% used
PS Old Generationcapacity = 41943040 (40.0MB)used = 16446840 (15.684928894042969MB)free = 25496200 (24.31507110595703MB)39.21232223510742% used14440 interned Strings occupying 1362688 bytes.
smartFinancial程序占用的内存由352M下降到250M,降低了约100M,使用程序正常。
root 4804 4.3 25.3 2229316 255540 pts/8 Sl 14:53 0:16 java -jar -server -Xms150m -Xmx150m -Xmn110m -XX:+UseParallelOldGC -XX:SurvivorRatio=5 -XX:TargetSurvivorRatio=90 /home/kenick/smartFinancial-manager/smartfinancialmanager.jar --jasypt.encryptor.password=kenick@2020 --spring.profiles.active=cloud
查看系统负载和CPU,有略微上升。
top - 15:02:23 up 81 days, 16:44, 9 users, load average: 0.45, 0.21, 0.12
Tasks: 126 total, 2 running, 87 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 6.2 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1007748 total, 460124 free, 432536 used, 115088 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 441852 avail Mem
1G内存JAVA程序优化相关推荐
- 调整了一下JVM内存,程序快了700%,Java程序优化笔记
Java程序性能优化是一个永远逃不开的话题,优化无处不在!一个偶然间,小编得到了一份Java程序性能优化的笔记,小编读完这份笔记后大为惊叹,实在是写的太好了,不忍独乐乐,于是把这份笔记免费分享出来,供 ...
- Java 程序优化 (读书笔记)
--From : JAVA程序性能优化 (葛一鸣,清华大学出版社,2012/10第一版) 1. java性能调优概述 1.1 性能概述 程序性能: 执行速度,内存分配,启动时间, 负载承受能力. 性能 ...
- 服务器不知别内存_程序优化浅谈服务器实现高并发的原理
我们每天刷手机都会接收到各种各样的信息,看到这篇文章时,不知大家有没有思考过,这些信息是如何组织,然后通过服务器发送给我们的呢? 其实也很简单,不就是一条一条请求嘛,服务器根据不同的请求分别去不同的数 ...
- Java程序优化的一些最佳实践
摘要:本文介绍了Java代码优化的过程,总结了优化Java程序的一些最佳实践,分析了进行优化的方法并解释了性能提升的原因.多角度分析导致性能低的原因并逐个进行优化使得程序性能得到极大提升,代码可读性. ...
- Java 程序优化:字符串操作、基本运算方法等优化策略
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 字符串操作优化 字符串对象 字符串对象 ...
- java程序优化快捷键_Java 代码中针对性能优化的总结方案
在一个好的项目中代码优化是永远离不开的话题,如果有充足的时间开发和维护代码,必须考虑每个可以优化的细节,日积月累,项目的质量才会上升,代码优化是绝对有必要的工作.代码优化的主要目的是减少代码块,提升代 ...
- Java程序优化细节
1. 尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 1).控制资源的使用,通过线程 ...
- Java 程序优化之对象池
对象池概念: 如果一个类被频繁请求使用,那么不必每次都生成一个实例,可以将这个类都一些实例保存到一个"池"中,待需要使用的时候直接从"池"中获取.这个" ...
- Java程序优化之享元模式
享元模式主要目的是为了提高系统性能.它的核心思想是:如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用都创建新的对象.享元模式是为数不多的为提升系统性能而生的设计模式 ...
最新文章
- 【CVPR2022】UniVIP:自监督视觉预训练的统一框架
- Redis的字典扩容与ConcurrentHashMap的扩容策略比较
- [置顶]Java Web学习总结(25)——MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建...
- 数据库表及字段命名、设计规范
- jax-rs jax-ws_什么是JAX-RS注释? (第3部分)
- 基于Keras的YOLOv4目标检测平台
- 【Flink】FileNotFoundException: JAR file does not exist: -ynm -yst
- Haproxy实现负载均衡及相关配置(添加日志、设定自动刷新时间、控制访问、动静分离、读写分离)
- DockerFile的编写构建镜像步骤,常用命令和案例
- 计算机主机放电,电脑需要放电才能开机_电脑主板放电才能开机
- 【Inpho精品教程】任务二:Inpho创建工程(创建项目、新建相机参数、导入照片、导入POS、生成航条、保存项目)
- 下一步工作应该怎样开展
- ArrayList集合
- Android 查询局域网内所有ip和mac地址
- 【技术类】【ArcGIS对国产卫星的支持2:高分一号卫星】篇9、动态影像服务发布
- Sublime Text 设置中文版
- 【FICO】S4下的资产年结
- 人工智能在游戏领域的应用
- 骁龙处理器排名天梯图2022
- LeeCode1715. 苹果和橘子的个数
热门文章
- 【牛津大学博士论文】自监督学习视频理解
- php数值不对怎么办,excel显示数值和实际结果不一致怎么办
- 关于电脑开(WIFI、蓝牙)热点其他设备无法连接的问题
- c语言中的无符号字符指什么,深入分析C语言中的有符号和无符号
- 【hive 日期函数 大全】Hive常用日期函数整理 史上最全
- strsep函数用法
- Python遥感图像处理应用篇(十):使用NDVI指数批量计算叶面积指数LAI
- 「津津乐道播客」#238. 科技乱炖:程序员的大裤衩和格子衫
- LLCC68寄存器模式开发-几个关键操作说明
- c++ 病句 今日头条面试题