• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

标签: JAVA


jmap 查看 jvm 中 heap 堆 和 非堆 内存大小

使用方法: jmap -heap PID[root@instance-2gak1pfv debuginfo]# java -version openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode) ... ...
阅读全文

JVM 进程内存 大小计算

JVM进程内存 ≈ JVM程序自身占用内存 + Java非堆 + Java堆(新生代和老年代) + 线程栈+ Java NIO(直接内存)1. JVM程序自身占用内存理论上不大 ;字节码2. JAVA 堆和非堆法一:可以通过阿里开源开源工具 arthas (还可以查线程) 【arthas使用方法】法二:可以通过命令 jmap -heap pid对于 java8 而言,涉及到的参数有:-Xms-Xmx-XX:MetaspaceSize-XX:MaxMetaspaceSize3. JAVA线程栈计算公式:线程数 * Xss(单位:kb) = 线程栈总内存例如: 线程数 100 ... ...
阅读全文

jstat --- JVM的统计监测工具 java gc 内存使用 故障排查

Jstat名称:Java Virtual Machine statistics monitoring tooljstat 官方文档:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html参考文档:jvm 性能调优工具之 jstat 命令详解1. jstat命令简介jstat 命令可以查看 堆内存 及 非堆内存 各部分的使用量,以及 加载类 的数量。命令的格式如下:jstat [-命令选项] [-t] [-h lines] [vmid] [间隔时间/毫秒]&... ...
阅读全文

JAVA8 元空间使用查看 JVM 参数 MetaspaceSize 和 MaxMetaspaceSize 的讲解

元空间使用情况查看配置了-XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m,通过   jstat -gcutil pid 查看 M 的值为 98.32,即 Meta 区使用率 达到了98.32%:然后,再通过  jstat -gc 4210 2s 3  查看,结果如下图所示,计算 MU/MC 即 Meta 区的使用率确实达到了 98.32%,但是 MC,即 Metaspace Capacity 只有 55296k,并不是参数 MetaspaceSize 指定的 256m... ...
阅读全文

jvm:堆、栈、新生代、方法区(永久代/元空间)配置命令、直接内存大小配置

堆:-Xms:堆的最小值也可以称初始值;-Xmx:堆的最大值;栈:-Xss:栈大小;新生代:如果同时配置,优先级如下:高:-XX:NewSize/MaxNewSize中间 -Xmn (NewSize= MaxNewSize)低:-XX:NewRatio  表示比例,例如=2,表示 新生代:老年代 = 1:2方法区(永久代/元空间):jdk1.7及以前:-XX:PermSize;-XX:MaxPermSize;jdk1.8以后:-XX:MetaspaceSize; -XX:MaxMetaspaceSizejdk1.8以后大小就只受本机总内存的限制,MaxMetaspaceSize 只代... ...
阅读全文

java 程序 jvm 垃圾回收算法 收集器 和 内存溢出

1.垃圾回收算法(GC,Garbage Collection)红色是标记的非活动对象,绿色是活动对象。标记-清除(Mark-Sweep)GC 分为两个阶段,标记和清除。首先标记所有可回收的对象,在标记完成后统一回收所有被标记的对象。同时会产生不连续的内存碎片。碎片过多会导致以后程序运行时需要分配较大对象时,无法找到足够的连续内存,而不得已再次触发GC。复制(Copy)将内存按容量划分为两块,每次只使用其中一块。当这一块内存用完了,就将存活的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。这样使得每次都是对半个内存区回收,也不用考虑内存碎片问题,简单高效。缺点需要两倍的内存空间... ...
阅读全文

java 程序 jvm 内存分配使用 及 相关概念详解

JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。 1. jvm 内存(图为 java8之前)JVM 内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Generation),非堆内存就一个永久代(Permanent Generation)年轻代又分为 Eden 和 Survivor 区。Survivor 区由 FromSpace 和 ToSpace 组成。Eden 区占大容量,Survivor 两个区占小容量,默认比例是 8:1:1堆内存用途:存... ...
阅读全文

Arthas - Alibaba 开源 Java 诊断工具 线上问题定位处理的终极利器

Arthas 是Alibaba开源的Java诊断工具,深受开发者喜爱。前言在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用 Arthas 轻松定位,迅速解决,及时止损,准时下班。1、Arthas 介绍Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自动不全,可以方便的定位和... ...
阅读全文

Full GC 分析:设置 Java JVM 参数实现在Full GC前后自动生成Dump

共有三个VM参数需要设置:HeapDumpBeforeFullGC :实现在Full GC前dump。HeapDumpBeforeFullGC :实现在Full GC后dump。HeapDumpPath               :设置Dump保存的路径方法1:启动 jvm 时,带上这些参数(这个方法适合开发测试环境)java -Xms200m -Xmx200m -Xmn50m -XX:PermSize=30m -XX:+HeapDumpBeforeFullGC&... ...
阅读全文

docker 容器 java 程序改时区 localtime 和 timezone

容器时间与主机差8个小时:主机的与容器的 /etc/localtime 不一致解决方法:挂载主机的 /etc/localtime如果没有则 cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime如果里面运行的是java程序,哪么程序时间还是会8个小时的差别:主要是Java或取时间是从/etc/timezone里获取时区解决方法:挂载主机的 /etc/timezone如果没有则新建 echo "Asia/shanghai" > /etc/timezone;... ...
阅读全文

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。