JVM内存初步学习
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内存初步学习的更多相关文章
- JVM内存管理学习总结(一)
I.JVM进程的生命周期 JVM实例的生命周期和java程序的生命周期保持一致,即一个新的程序启动则产生一个新的JVM进程实例,程序结束则JVM进程实例伴随着消失.那么程序启动和程序终止就是JVM实例 ...
- jvm内存模型学习心得
昨天面试了两家,备受打击,问的多的就是jvm内存,然额真的是一头雾水.工作中用到的真是少之又少,面试还得问道, 今天恶补了下,在此作以下总结: jvm分为5部分 1.程序计数器 jvm支持多线程运行, ...
- jvm 内存整理 -----学习
分为:方法区 ,堆 ,栈 ,本地栈 ,程序计数器 1.程序计数器 保存当前线程执行的字节码行号指示器,解释器工作时,都是通过改变计数器的值来获取下一条程序指令,循环.异常.跳转.分支. ...
- java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3)
概述 Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 对于从事C.C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又 ...
- 【JVM学习笔记一】JVM内存分布
Overview 学习JVM首先需要了解一下JVM管理的内存是如何分布的,在看了<深入理解Java虚拟机>和一些博文之后,我准备自己记录一下学习的过程. 下图是JVM中运行时数据区的大致示 ...
- jvm内存JVM学习笔记-引用(Reference)机制
在写这篇文章之前,xxx已经写过了几篇关于改jvm内存主题的文章,想要了解的朋友可以去翻一下之前的文章 如果你还不了解JVM的基本概念和内存划分,请阅读JVM学习笔记-基础知识和JVM学习笔记-内存处 ...
- java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4)
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项 ...
- JVM内存回收机制——哪些内存需要被回收(JVM学习系列2)
上一篇文章中讨论了Java内存运行时的各个区域,其中程序计数器.虚拟机栈.本地方法栈随线程生灭,且创建时需要多少内存,基本上在译期间就决定的了,所以在内存回收时无需特殊的关注.而堆和方法区则不同,首先 ...
- 记一次线上事故的JVM内存学习
今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务.最后运维大神各种倒腾内存,GC稳定后,服务正常.虽说全程在打酱油,但是也跟着学习不少的东西. 第一个问题:为什么 ...
- 深入理解java虚拟机学习笔记(一)JVM内存模型
上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状态和激情都要 ...
随机推荐
- AI开发实践丨客流分析之未佩戴口罩识别
摘要:通过本教程,我们可以学习客流统计应用的扩展--过线客流统计+口罩佩戴识别,可用于商超.写字楼入口安检. 本文分享自华为云社区<客流分析之未佩戴口罩识别>,作者: HiLens_fei ...
- OGC标准WMTS服务概念与地图商的瓦片编号流派-web地图切片加载
还不知道地图栅格化切片等相关GIS原理的,推荐阅读<webGIS底图栅格化与实时数据合成处理原理,地图API设计,xyz加载> OGC概念 OGC全称--开放地理空间信息联盟(Open G ...
- 最新的iOS应用上架App Store详细流程解析
最新的iOS应用上架App Store详细流程解析 2023已经过了2/3的时间,由于现在苹果签名市场的价格不断的上升,现在很多的开发商一直在想着如何进行上架一些自己的产品,下面小编来给大家梳理一下上 ...
- 火山引擎DataLeap数据调度实例的 DAG 优化方案 (二):功能设计
针对上面存在的问题以及对需求的分析,我们可以进行如下的功能实现与设计: 首先是渲染方案的替换,将 svg 的渲染方案替换成 canvas 渲染,通过减少页面中 DOM 的数量,提高前端渲染性能. 其次 ...
- forms组件渲染标签 form表单展示信息 forms组件校验方式 form组件源码 modelform组件 django自定义中间件
目录 forms组件渲染标签 方式一:全自动渲染表单 as_p as_ul as_table 表单类的label标签 方式二:手动渲染 方式三:for循环表单对象(推荐) 查看源码 渲染标签的注意事项 ...
- 用户 IP,里面藏了多少秘密?
大家都知道,要邮寄一封信给正确的收件人,需要提供准确而精细的地址,这个地址需要从国家和城市精确到邮政编码,街道和门牌号码.只有这样,邮局的工作人员才能知道将信送到那里. Internet 上也是如此, ...
- Spring 学习笔记(3)控制反转 IoC
本篇文章主要对 Spring 框架中的核心功能之一控制反转 (IOC,Inversion of Control)进行介绍,采用理论 + 实战的方式给大家阐述其中的原理以及明确需要注意的地方. 控制反转 ...
- MAVEN 配置和基本使用
Maven 安装配置 解压 apache-maven-3.6.1.rar 既安装完成 配置环境变量 MAVEN_HOME 为安装路径的 bin 目录 在 Path 下添加 %MAVEN_HOME%\b ...
- CH6803 导弹防御塔 (二分 + 匈牙利 / 网络流)
链接:https://ac.nowcoder.com/acm/contest/1062/D 题目描述 Freda的城堡-- "Freda,城堡外发现了一些入侵者!" "喵 ...
- vue 文件路径获取文件名
例如: url 是//resource//20220819//kfz//调试.zip转换后结果为 调试.zip//文件路径获取文件名 getFileName(url) { let name = &qu ...