JVM内存初步学习

 

最近在学习容器内的JVM运行, 简单总结了下学习结果, 但是感觉还是分不清楚很多地方:

同事帮忙进行了 native memory的监控, 主要信息简要如下:

jvm刚运行起来时的信息为:

我这边容器运行时, 使用的参数是 4c4g

jvm 启动的参数为:

 -Xmx2560m -Xms2560m -XX:MetaspaceSize=512m

根据下面的监控结果

但是明显看到 reserved的内存是 4.7g 超过了 堆区和元数据区的总和.

也看到了 committed的内存大小是 3.5g 左右.

内存分类信息为:

堆区 2.5g 左右就是 直接分配的大小了, 齐总应该包含 Class的信息是 1.3g左右, 其他空间应该是暂时的空闲区域.

线程池  200m JIT编译缓存代码 280m  垃圾回收线程 100m  我理解的 symbol 应该就是文件对象的缓存(不一定正确)

可以看到内存的需求种类还是非常繁多的.

Native Memory Tracking:

Total: reserved=4703901KB, committed=3595737KB

-                 Java Heap (reserved=2621440KB, committed=2621440KB)

                            (mmap: reserved=2621440KB, committed=2621440KB) 

-                     Class (reserved=1294166KB, committed=277974KB)

                            (classes #44537)

                            (malloc=12118KB #109287) 

                            (mmap: reserved=1282048KB, committed=265856KB) 

-                    Thread (reserved=189995KB, committed=189995KB)

                            (thread #185)

                            (stack: reserved=189112KB, committed=189112KB)

                            (malloc=603KB #926) 

                            (arena=280KB #365)

-                      Code (reserved=282656KB, committed=190684KB)

                            (malloc=33056KB #43651) 

                            (mmap: reserved=249600KB, committed=157628KB) 

-                        GC (reserved=101602KB, committed=101602KB)

                            (malloc=5822KB #1753) 

                            (mmap: reserved=95780KB, committed=95780KB) 

-                  Compiler (reserved=625KB, committed=625KB)

                            (malloc=494KB #5497) 

                            (arena=131KB #6)

-                  Internal (reserved=151177KB, committed=151177KB)

                            (malloc=151145KB #56630) 

                            (mmap: reserved=32KB, committed=32KB) 

-                    Symbol (reserved=50252KB, committed=50252KB)

                            (malloc=47751KB #509336) 

                            (arena=2501KB #1)

-    Native Memory Tracking (reserved=11411KB, committed=11411KB)

                            (malloc=36KB #426) 

                            (tracking overhead=11375KB)

-               Arena Chunk (reserved=576KB, committed=576KB)

                            (malloc=576KB) 

运行一晚上后的信息为:

能够看到 一晚上多了200m的内存 commited 数量, 并且有持续增加的区趋势

堆区因为有限制, 所以不会有大的变化, 但是可以看到 class的数量就是变大了. 多了100m

栈区域基本不变, 还是200个左右.

jit 代码缓存增长了大约10m

其他内存变化不是特别大.

但是感觉内存还是存在上涨的区域 容器内运行时还是需要控制各个区域内存的大小,避免出现超过container的限制而崩溃.

Total: reserved=4775691KB, committed=3711687KB

-                 Java Heap (reserved=2621440KB, committed=2621440KB)

                            (mmap: reserved=2621440KB, committed=2621440KB) 

-                     Class (reserved=1336975KB, committed=327439KB)

                            (classes #52046)

                            (malloc=13967KB #137324) 

                            (mmap: reserved=1323008KB, committed=313472KB) 

-                    Thread (reserved=204481KB, committed=204481KB)

                            (thread #199)

                            (stack: reserved=203504KB, committed=203504KB)

                            (malloc=649KB #996) 

                            (arena=328KB #393)

-                      Code (reserved=290336KB, committed=235868KB)

                            (malloc=40736KB #56418) 

                            (mmap: reserved=249600KB, committed=195132KB) 

-                        GC (reserved=101611KB, committed=101611KB)

                            (malloc=5831KB #2046) 

                            (mmap: reserved=95780KB, committed=95780KB) 

-                  Compiler (reserved=841KB, committed=841KB)

                            (malloc=710KB #7054) 

                            (arena=131KB #6)

-                  Internal (reserved=153165KB, committed=153165KB)

                            (malloc=153133KB #66436) 

                            (mmap: reserved=32KB, committed=32KB) 

-                    Symbol (reserved=53852KB, committed=53852KB)

                            (malloc=51319KB #545043) 

                            (arena=2533KB #1)

-    Native Memory Tracking (reserved=12795KB, committed=12795KB)

                            (malloc=41KB #480) 

                            (tracking overhead=12755KB)

-               Arena Chunk (reserved=193KB, committed=193KB)

                            (malloc=193KB) 

JVM内存初步学习的更多相关文章

  1. JVM内存管理学习总结(一)

    I.JVM进程的生命周期 JVM实例的生命周期和java程序的生命周期保持一致,即一个新的程序启动则产生一个新的JVM进程实例,程序结束则JVM进程实例伴随着消失.那么程序启动和程序终止就是JVM实例 ...

  2. jvm内存模型学习心得

    昨天面试了两家,备受打击,问的多的就是jvm内存,然额真的是一头雾水.工作中用到的真是少之又少,面试还得问道, 今天恶补了下,在此作以下总结: jvm分为5部分 1.程序计数器 jvm支持多线程运行, ...

  3. jvm 内存整理 -----学习

      分为:方法区 ,堆 ,栈 ,本地栈 ,程序计数器 1.程序计数器       保存当前线程执行的字节码行号指示器,解释器工作时,都是通过改变计数器的值来获取下一条程序指令,循环.异常.跳转.分支. ...

  4. java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)

    概述 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又 ...

  5. 【JVM学习笔记一】JVM内存分布

    Overview 学习JVM首先需要了解一下JVM管理的内存是如何分布的,在看了<深入理解Java虚拟机>和一些博文之后,我准备自己记录一下学习的过程. 下图是JVM中运行时数据区的大致示 ...

  6. jvm内存JVM学习笔记-引用(Reference)机制

    在写这篇文章之前,xxx已经写过了几篇关于改jvm内存主题的文章,想要了解的朋友可以去翻一下之前的文章 如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处 ...

  7. java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4)

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项 ...

  8. JVM内存回收机制——哪些内存需要被回收(JVM学习系列2)

    上一篇文章中讨论了Java内存运行时的各个区域,其中程序计数器.虚拟机栈.本地方法栈随线程生灭,且创建时需要多少内存,基本上在译期间就决定的了,所以在内存回收时无需特殊的关注.而堆和方法区则不同,首先 ...

  9. 记一次线上事故的JVM内存学习

    今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么 ...

  10. 深入理解java虚拟机学习笔记(一)JVM内存模型

    上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状态和激情都要 ...

随机推荐

  1. 号外!5G+X联创营华为云官网上线,5G 创业春天来了!

    摘要:为助力互联网行业客户与伙伴实现降本增效.抓住新趋势,华为云发起"5G+X"联创营计划. 会议室里,产品经理和程序员们唇枪舌战,陷入激烈得讨(zheng)论(chao). 产品 ...

  2. Springboot中,如何读取配置文件中的属性

    摘要:在比较大型的项目的开发中,比较经常修改的属性我们一般都是不会在代码里面写死的,而是将其定义在配置文件中,之后如果修改的话,我们可以直接去配置文件中修改,那么在springboot的项目中,我们应 ...

  3. 中断操作:AbortController学习笔记

    前端面试一般喜欢问: 请手写一个带取消功能的延迟函数,axios 取消功能的原理是什么? 如何中断请求fetch的原理分析和应用? 在看来<使用 AbortController 终止 fetch ...

  4. 错误: -source 1.7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)

    Modules 把 Language level 调成 8

  5. 消息总线 —— SpringCloud Bus

    Bus 简介 Spring Cloud Bus 是 Spring Cloud 体系内的消息总线,支持 RabbitMQ 和 Kafka 两种消息中间件.所谓消息总线,简单理解就是一个消息中心,众多微服 ...

  6. PDF转图片-itextpdf-java源码

    提供PDF 文件转图片的工具类. 电子签章过程中存在着在网页上对签署文件进行预览.指定签署位置.文件签署等操作,由 于图片在浏览器上的兼容性和友好性优于PDF 文件,所以一般在网页上进行电子签章时,会 ...

  7. linux tar解压命令总结

    把常用的tar解压命令总结下,当作备忘: -c:建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可 ...

  8. 记录一次centost docker 容器 占满磁盘100% 的处理

    备忘 1.查看系统磁盘使用情况 df -h 2.查看docker镜像及容器空间占比 docker system df 3.查找大文件 find / -type f -size +100M -print ...

  9. Markdown 文档测试--demo

    Editor.md hhh 换行TEST 1 2 3 a b q d HEAD TEST Smart Test ... -- 目录 (Table of Contents) [TOCM] 目录 Edit ...

  10. 3 分钟创建 Serverless Job 定时获取新闻热搜

    不用掏手机,不用登微博,借助 SAE 定时任务就可以实现每小时获取实时新闻热搜!SAE 场景体验火热开启中,参与还可领好礼! Job 作为一种运完即停的负载类型,在企业级开发中承载着丰富的使用场景.S ...