JVM
victoruu
DevOps Linux K8S MySql
展开
-
JVM参数MetaspaceSize的误解
前言昨天谢照东大神在群里提出一个问题:怎么查看Metaspace里具体包含的是什么,起因是他的某个服务设置了-XX:MetaspaceSize=512m-XX:MaxMetaspaceSize=512m但是通过jstat -gcutil pid查看M的值为98(M的=MU/MC),即Metaspace区的使用量达到了512m*98%。遗憾的是,这个推算是错误的;推理以笔者测试环境上某个服务为例,配置了-XX:MetaspaceSize=256m-XX:MaxMetaspa..转载 2020-12-23 20:18:15 · 1600 阅读 · 0 评论 -
JVM Metaspace内存溢出排查与总结
一. 现象前段时间公司线上环境的一个Java应用因为OOM的异常报警,导致整个服务不可用被拉出集群,本地模拟重现的现象如下:当时的解决方案是增加metaspace的容量:-XX:MaxMetaspaceSize=500m,从原来默认的256m改为500m,虽然没有再出现oom,但这个只是临时解决方案,通过公司的监控系统观察metaspace的使用情况还是在上升,而且后面随着业务访问量越来越大还是有可能达到阈值。二. 分析Metaspace元空间主要是存储类的元数据信息,我们的应用里加转载 2020-12-23 20:17:21 · 1885 阅读 · 0 评论 -
JVM元空间Metaspace溢出
如何诊断Java8元空间泄漏?执行堆转储并使用Eclipse MAT进行分析。看看你已经加载的类。检查是否有意外情况,尤其是metaspace以每小时20 Mb的速度稳定增长,直到我们碰到MaxMetaspace并遇到OOME。我尝试过并行和G1垃圾收集器(jdk1.8.0_40)。在执行过程中,应用程序没有被重新部署,因此看起来不像是典型的类加载器泄漏。排除Java应用程序内存问题,OutOfMemoryError:Metaspace。从Java8开始,类元数据存储在元空间中。元空间不是Java堆转载 2020-12-23 20:16:13 · 4003 阅读 · 0 评论 -
记一次内存溢出导致的生产事故
背景因为同事的离职,半路被迫接手的一个可视化项目,使用ElasticSearch作为OLAP数据库、Docker作为部署工具等,突然有一天项目现场环境出现JVM内存溢出问题,被迫披挂上阵定位问题的原因分析过程top命令查看系统资源占有情况,cpu占用不高,内存占用高,并且虚拟内存高达16gTips:Java 程序由于自己维护堆的使用,导致调用 glibc 去管理内存的次数较少。更糟的是 Java 8 开始使用 metaspace 原空间取代永久代...转载 2020-12-23 20:14:52 · 213 阅读 · 0 评论 -
JVM学习-内存监控工具(五)
文章主目录jstat jstack JMAP 查看 & 分析 GC 日志 报错解决回到顶部jstat注以下命令 后面加个毫秒数可以每多少毫秒采集一次类加载统计root@iZ2ze2u21foywir3wp68o6Z dubbo_service]# jstat -class 10755Loaded(加载class的数量kb) Bytes(所占用空间大小kb) Unloaded(未加载数量kb) Bytes(未加载占用空间kb) Time(时间)转载 2020-12-23 20:13:52 · 223 阅读 · 0 评论