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计算方式是什么样的?相关推荐

  1. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  2. linux内存爆了会怎样,linux系统中内存爆满之后会如何?

    在使用python写程序的时候,发现一个可以无限迭代的迭代器,从而可以直接将系统中的内存占满,那么占满之后会发生什么呢? 1. 创建无限迭代,生成列表,如下: [root@python ~]# pyt ...

  3. linux下运行python程序如何控制内存_用Python实现Linux系统占用指定内存,CPU满载,服务器压力测试,场景设计...

    背景 提出两个需求 占满系统CPU 占用大内存 通过上网查资料,做实验使用Python实现了上述两个需求. 先看效果 执行前 内存 CPU 执行后 内存 CPU 代码实现 环境说明:代码使用Pytho ...

  4. linux使用什么dos系统安装,在Linux系统中安装DOSBox运行MS-DOS上游戏及程序的方法...

    在 Linux 系统中可以借助安装 DOSBox 来运行 MS-DOS 游戏及程序,比如运行 C++ 编译器 Turbo C++,同时 DOSBox 还支持 Windows.MacOS.Unix 操作 ...

  5. Java基础恶补——内存泄露、内存溢出

     Java基础恶补--内存泄露.内存溢出 (2010-09-15 15:56:26) 转载 标签: 杂谈 要点 内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分 ...

  6. java程序占用实际内存大小

    一.java程序占用实际内存大小 1.1.java命令启动参数-Xms -Xmx的问题         启动命令如下:java -server -Xms128m -Xmx128m -jar ****. ...

  7. c# 定位内存快速增长_C#和halcon的混编程序出现序内存泄露、句柄持续增加、视觉程序运行越来越慢等问题的处理...

    这个话题非常重要.勇哥苦于手中的项目遇到这样的问题. 这些问题表现是: (1)视觉程序内存占用会越来越大.这种内存变大通常是缓慢变大,几天不关机持续运行的话,大到几个G也不稀罕.通常,急速内存变大要容 ...

  8. 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理

    编写高质量代码改善java程序的151个建议--[110-117]异常及Web项目中异常处理 原创地址:http://www.cnblogs.com/Alandre/(泥沙砖瓦浆木匠),需要转载的,保 ...

  9. java程序员工资有多少?java程序员现状如何?

    现在java程序员的日子好过吗?他们的工资一般都是多少呢?现状如何呢?java程序员烂大街了吗?带着这些问题,让我们一起通过下面的文章来了解一下吧. 1.java程序的现状 一句话,加班,工资高. 这 ...

最新文章

  1. 互联网公司面试官是如何360°无死角考察候选人的?(下篇)
  2. 51nod 1368:黑白棋 二分图最大匹配
  3. 记计算机三级网络技术考试经历(附题库)
  4. 基于matlab的单相pwm逆变电路的仿真研究,基于MATLAB的单相PWM逆变电路的仿真研究...
  5. Win32多线程编程(2) — 线程控制
  6. 电视剧潜伏的真正结局
  7. ZZULIOJ 1130: 杨辉三角
  8. JavaScript基本数据类型和引用数据类型
  9. -lavutil -lavcodec -lavdevice -lavfilter -lavformat链接失败,换用-lffmpeg
  10. 动视暴雪电竞与哔哩哔哩电竞达成数年电竞赛事合作协议
  11. The Rust Programming Language - 第14章 更多关于Cargo和Crates.io的内容 - 14.2 将crate发布到Crate.io
  12. 如何在CAD中修复CAD图纸
  13. 【小米助手备份】-----找回微信聊天记录
  14. Android图像滤镜框架GPUImage从配置到应用
  15. windows应用(vc++2022)MFC基础到实战(1)-基础(1)
  16. vipkid(cocos creator)
  17. SQL解决Error converting data type nvarchar to numeric.
  18. Win10 RealSense L515 ORBSLAM2 配置全攻略
  19. 为什么一流成功人士的闹钟都定在早晨5:57
  20. 多个vue项目合并成一个_多个Excel表格合并成一个表,最简单的方法在这里

热门文章

  1. [JZOJ5551] 【NOI2019模拟6.24】旅途【最短路】
  2. Android studio:select process to attach to...找不到debug调试的目录
  3. 细胞器基因组|比较基因组分析助力深度挖掘细胞器进化关系
  4. kafka问题之Listener method could not be invoked with the incoming message
  5. php微信公众号消息推送
  6. Python 内置函数详解,进阶必备
  7. android studio 横向拖动条,Android HorizontalScrollView内子控件横向拖拽实例代码
  8. 知道打印机的IP地址,win10怎样连接打印机?
  9. 【脑洞大开】从哲学角度看人工智能:介绍徐英瑾的《心智、语言和机器》
  10. php guzzle并发,使用Guzzle并发请求接口