你的java程序有没有内存泄露,java进程在linux系统中rss计算方式是什么样的?
java进程在linux系统中rss计算方式如下:
RSS = Heap size + MetaSpace + OffHeap size
其中OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar)和JVM代码itse组成
内存使用过程
jvm内存是在启动时会按默认值(如元空间:20m)初始化大小,在后续运行过程中根据需要实时跟os申请新的物理内存空间,具体释放是在jvm堆空闲/使用达到一定比例后才会通过madvice通知到os回收,等待os进行回收操作。
内存计算举例如下:
Xmx和-Xms参数指定的就是Java程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存。堆只是影响Java程序占用内存数量的一个因素。
除了堆,影响Java程序所占用内存的因素还包括:栈、永生代、JVM本身、NIO中的DirectBuffer等。
假设Xmx为1024m,MaxMetaspaceSize为256m,Xss为512k,MaxDirectMemorySize为64m,ReservedCodeCacheSize为64m,有3000个线程,在加上jvm本身占用的内存?。
则Java程序占用的最大内存可能为:1024m + 256m + 3000*(512k+30k) + 128m + 64m + 64m + ? = 3123m+?
java程序参数说明
-Xmx1024m //堆最大值
-Xms1024m //堆初始大小
-Xmn384m //新生代代销
-Xss256k //栈大小,线程比这个略大300左右
-XX:ReservedCodeCacheSize=64m //code区大小
-XX:NativeMemoryTracking=detail //开启内存统计
-XX:MetaspaceSize=128m //元空间初始值
-XX:MaxMetaspaceSize=128m //元空间最大值
-XX:MaxDirectMemorySize=64m //直接内存最大值
参考文档
对于rss大于xmx的解释
https://cloud.tencent.com/developer/ask/60683
堆外内存MaxDirectMemorySize
https://my.oschina.net/go4it/blog/3029481
https://blog.csdn.net/cloud_ll/article/details/50815671
游戏服务器内存占用动态调整
https://gameinstitute.qq.com/community/detail/118528
malloc之后再进行free,free的内存空间一定被OS回收了吗?
https://www.zhihu.com/question/29161424
相关分析命令
java -XX:+PrintFlagsInitial //打印全局默认值
jstat -gc pid //查看jvm gc情况
jmap -heap pid //查看jvm堆使用情况
jmap -histo pid
jmap -histo:live pid //查看jvm堆中存活实例
jmap -dump:format=b,file=jconsole.dump pid //jmap dump jvm内存用于分析内存中的实例数量
jstat -gcutil pid 1000 1000 //根据指定频率采样gc
jmap -clstats pid 类数量统计
jcmd pid VM.native_memory baseline //内存基线
jcmd pid VM.native_memory summary //内存汇总
jcmd pid VM.native_memory summary.diff //内存汇总与基线进行比较
ps -p pid -o pcpu,cutime,cstime,cmin_flt,cmaj_flt,rss,size,vsize
pidstat pid
pidstat -r -p pid 1 //监控进程内存使用情况
pmap -x pid //查看进程内存分配情况
gdb attach pid //attach进程
dump memory ./002.dump startaddress endaddress //dump进程的内存
strings memory //查看内存
dump memory ./0047104.dump 0x7fb6c8000000 0x7fb6caffd000
stress --vm 1 --vm-bytes 220M --vm-keep & //吃掉内存
你的java程序有没有内存泄露,java进程在linux系统中rss计算方式是什么样的?相关推荐
- java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题
在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...
- linux内存爆了会怎样,linux系统中内存爆满之后会如何?
在使用python写程序的时候,发现一个可以无限迭代的迭代器,从而可以直接将系统中的内存占满,那么占满之后会发生什么呢? 1. 创建无限迭代,生成列表,如下: [root@python ~]# pyt ...
- linux下运行python程序如何控制内存_用Python实现Linux系统占用指定内存,CPU满载,服务器压力测试,场景设计...
背景 提出两个需求 占满系统CPU 占用大内存 通过上网查资料,做实验使用Python实现了上述两个需求. 先看效果 执行前 内存 CPU 执行后 内存 CPU 代码实现 环境说明:代码使用Pytho ...
- linux使用什么dos系统安装,在Linux系统中安装DOSBox运行MS-DOS上游戏及程序的方法...
在 Linux 系统中可以借助安装 DOSBox 来运行 MS-DOS 游戏及程序,比如运行 C++ 编译器 Turbo C++,同时 DOSBox 还支持 Windows.MacOS.Unix 操作 ...
- Java基础恶补——内存泄露、内存溢出
Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...
- java程序占用实际内存大小
一.java程序占用实际内存大小 1.1.java命令启动参数-Xms -Xmx的问题 启动命令如下:java -server -Xms128m -Xmx128m -jar ****. ...
- c# 定位内存快速增长_C#和halcon的混编程序出现序内存泄露、句柄持续增加、视觉程序运行越来越慢等问题的处理...
这个话题非常重要.勇哥苦于手中的项目遇到这样的问题. 这些问题表现是: (1)视觉程序内存占用会越来越大.这种内存变大通常是缓慢变大,几天不关机持续运行的话,大到几个G也不稀罕.通常,急速内存变大要容 ...
- 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
编写高质量代码改善java程序的151个建议--[110-117]异常及Web项目中异常处理 原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保 ...
- java程序员工资有多少?java程序员现状如何?
现在java程序员的日子好过吗?他们的工资一般都是多少呢?现状如何呢?java程序员烂大街了吗?带着这些问题,让我们一起通过下面的文章来了解一下吧. 1.java程序的现状 一句话,加班,工资高. 这 ...
最新文章
- 互联网公司面试官是如何360°无死角考察候选人的?(下篇)
- 51nod 1368:黑白棋 二分图最大匹配
- 记计算机三级网络技术考试经历(附题库)
- 基于matlab的单相pwm逆变电路的仿真研究,基于MATLAB的单相PWM逆变电路的仿真研究...
- Win32多线程编程(2) — 线程控制
- 电视剧潜伏的真正结局
- ZZULIOJ 1130: 杨辉三角
- JavaScript基本数据类型和引用数据类型
- -lavutil -lavcodec -lavdevice -lavfilter -lavformat链接失败,换用-lffmpeg
- 动视暴雪电竞与哔哩哔哩电竞达成数年电竞赛事合作协议
- The Rust Programming Language - 第14章 更多关于Cargo和Crates.io的内容 - 14.2 将crate发布到Crate.io
- 如何在CAD中修复CAD图纸
- 【小米助手备份】-----找回微信聊天记录
- Android图像滤镜框架GPUImage从配置到应用
- windows应用(vc++2022)MFC基础到实战(1)-基础(1)
- vipkid(cocos creator)
- SQL解决Error converting data type nvarchar to numeric.
- Win10 RealSense L515 ORBSLAM2 配置全攻略
- 为什么一流成功人士的闹钟都定在早晨5:57
- 多个vue项目合并成一个_多个Excel表格合并成一个表,最简单的方法在这里
热门文章
- [JZOJ5551] 【NOI2019模拟6.24】旅途【最短路】
- Android studio:select process to attach to...找不到debug调试的目录
- 细胞器基因组|比较基因组分析助力深度挖掘细胞器进化关系
- kafka问题之Listener method could not be invoked with the incoming message
- php微信公众号消息推送
- Python 内置函数详解,进阶必备
- android studio 横向拖动条,Android HorizontalScrollView内子控件横向拖拽实例代码
- 知道打印机的IP地址,win10怎样连接打印机?
- 【脑洞大开】从哲学角度看人工智能:介绍徐英瑾的《心智、语言和机器》
- php guzzle并发,使用Guzzle并发请求接口