我进行jvm内存调优的一些记录
jvm内存调优的一些记录
java内存调优的方法和过程
可以使用
jmap -heap pid号 查看,例如pid是9300,执行的结果可能是这样的。
root@ubuntu:~# jmap -heap 9300
Attaching to process ID 9300, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.171-b11
using thread-local object allocation.
Parallel GC with 18 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 4190109696 (3996.0MB)
NewSize = 87031808 (83.0MB)
MaxNewSize = 1396703232 (1332.0MB)
OldSize = 175112192 (167.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 378535936 (361.0MB)
used = 13720728 (13.085105895996094MB)
free = 364815208 (347.9148941040039MB)
3.6246830736831286% used
From Space:
capacity = 164626432 (157.0MB)
used = 0 (0.0MB)
free = 164626432 (157.0MB)
0.0% used
To Space:
capacity = 162529280 (155.0MB)
used = 0 (0.0MB)
free = 162529280 (155.0MB)
0.0% used
PS Old Generation
capacity = 339738624 (324.0MB)
used = 18348624 (17.498611450195312MB)
free = 321390000 (306.5013885498047MB)
5.400806003146702% used
20544 interned Strings occupying 2562384 bytes.
我们最关注的是Old Generation的占用情况。从数据上看到占用大约17.49m。
按照java官方的说明来配置的话计算的基数是老年时代存活实例的倍数。
Java整个堆大小设置,Xmx 和 Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍
永久代 PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍。
年轻代Xmn的设置为老年代存活对象的1-1.5倍。
老年代的内存大小设置为老年代存活对象的2-3倍。
这样计算下来,
Xmx与Xms 大约是300~400M(17.49按100M计算)
Xmn可以设置为128M,也就是1.2倍
PerSize与MaxPermSize是120M~150M
以上的说的是heap堆内存的设置。没完,还有。
非堆内存:
还必须的说下 -XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;
由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。
这部分内存用于存放元数据信息。如果2G内存、64那么计算下来只有32M内存用于存放数据了,就容易产生这个OutOfMemoryError:PermGen Space这个错误了。
(1)这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同。
(2)GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。
所以如果运行的机器内存比较小,而我们需要引用大量的jar包,比如体积50M的jar包,那么就会出现内存溢出的问题了,这时候需要我们特殊制定一次这个内存的参数。一般大于引用jar包的体积总量就可以了。
还有启动的时候 -XX:+UseParallelGC,这个参数也可以稍稍提高一些GC的速度。
java -jar -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+UseParallelGC 我是一个jar包.jar
比如PS Old Generation 实际占用32M
java -jar -Xms512m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256m -XX:+UseParallelGC
我进行jvm内存调优的一些记录的更多相关文章
- JVM内存调优原则及几种JVM内存调优方法
转载,如需帮助,请联系wlgchun@163.com https://blog.csdn.net/LeegooWang/article/details/88696195 如何对JVM进行内存调优? ...
- JVM内存调优
JVM性能调优有很多设置,这个参考JVM参数即可. 主要调优的目的: 控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为 控制JVM堆栈大 ...
- 【总结】性能调优:JVM内存调优相关文章
[总结]性能调优:JVM内存诊断工具 [总结]性能调优:CPU消耗分析 [总结]性能调优:消耗分析 JVM性能调优
- JAVA系列之JVM内存调优
一.前提 JVM性能调优牵扯到各方面的取舍与平衡,往往是牵一发而动全身,需要全盘考虑各方面的影响.在优化时候,切勿凭感觉或经验主义进行调整,而是需要通过系统运行的客观数据指标,不断找到最优解.同时,在 ...
- JVM 内存调优 与 实际案例
堆内存设置 原理 JVM堆内存分为2块:Permanent Space 和 Heap Space. Permanent 即 持久代(Permanent Generation),主要存放的是Java类定 ...
- tomcat jvm 内存调优 适用于 JDK 6 & 7
参考:https://blog.csdn.net/m0_37327416/article/details/76185051 1.jvm内存管理机制: 1)堆(Heap)和非堆(Non-heap)内存 ...
- java_opts 参数与JVM内存调优
Linux修改catalina.sh文件 如: JAVA_OPTS=”-server -Dfile.encoding=UTF-8 -Xms=512m -Xmx1024m -XX:PermSize=12 ...
- 一次JVM内存调优过程
项目中,有个同事写的JOB,使用到查询数据库大量历史协议数据(大概300W左右),由于对存放数据的list或map没有做“用完即时声明释放”. 导致此Jar部署在windows service后,进程 ...
- tomcat增加内存 JVM内存调优
tomcat总是卡死,查看日志catalina.out 发现疯狂报错 如下,提示内存溢出 java.lang.OutOfMemoryError: Java heap space 此外常见的内存溢出有以 ...
随机推荐
- Delphi中Unicode转中文
function UnicodeToChinese(inputstr: string): string; var i: Integer; index: Integer; temp, top, last ...
- SignalR 2 入门
在本教程中使用的软件版本 Visual Studio 2015 .NET 4.5 SignalR 版本 2 概述 本教程介绍了通过演示如何生成简单的基于浏览器的聊天应用程序的 SignalR 开发. ...
- 解决SHAREJPOINT 跨域问题
目前仅支持IE7/8不支持IE11和谷歌 对于跨域情况,目前找到如果jquery是get获取方式,可以配置web.config相关属性,具体powershell命令如下: Add-PSSnapin M ...
- 【kuangbin专题】计算几何_半平面交
1.poj3335 Rotating Scoreboard 传送:http://poj.org/problem?id=3335 题意:就是有个球场,球场的形状是个凸多边形,然后观众是坐在多边形的边上的 ...
- [ActionScript 3.0] as3处理xml的功能和遍历节点
as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式. XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据.将数据加载到 XML 对象 ...
- 编译lua-5.3.5时出错解决方法
问题描述: 执行 make linux test 过程出现错误,错误信息如下: “ lua.c:82:31: fatal error: readline/readline.h: No such fil ...
- js中cookie,localStorage(sessionStorage)的存取
一.cookie (原生的不好用,自己简单封装) 1. 存cookie的方法: function setCookie(c_name,value,expiredays) { var exdate=new ...
- SQL Server —— 查询数据库、表、列等
一.查询数据库(sys.databases —— select *from sys.databases where name='<数据库名>') select *from sys.data ...
- Linux 服务器部署 PgAdmin 4 Server
PostgreSQL 使用率越来越高,但是好用的图形化软件,诸如 Navicat.DataGrip.HeidiSQL 都是客户端软件,对于访问控制来说,比起 MySQL 的 phpMyAdmin 更加 ...
- 在MVC3中修改KindEditor实现上传图片到指定文件夹
KindEditor编辑器默认上传的图片文件夹,是根据系统时间自动生成的,图片是自动上传到这些文件夹里面,无法选择.如果要上传图片到指定文件夹,像相册一样管理图片,则需要扩展KindEditor编辑器 ...