jstat --- java jvm gc 异常自动监控脚本 检测以及导出相关信息
Linux JAVA
2023-08-02 15:20:50
547
0
启动命令# 运行gc
nohup jstat -gc 1 1000 > sso.gc.log 2>&1 &
# 运行脚本
nohup /bin/bash bb.sh >oooooo.log 2>&1 &--- run with old gc -------------#!/bin/bash
jmapFile=sso-jmap.log
jstackFile=sso-jstack.... ...
阅读全文
容器内使用 jinfo、jmap 命令报错 Operation not permitted
Linux JAVA
2023-03-16 15:38:10
569
0
这其实不是什么 Bug,而是 Docker 自 1.10 版本开始加入的安全特性。类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是 Docker 自 1.10 在默认的 seccomp 配置文件中禁用了 ptrace。1.1 –security-opt seccomp=unconfined简单暴力(不推荐),直接关闭 seccomp 配置。用法:docker run --security-opt seccomp:unconfined ...1.2 –cap-add=SYS_PTRACE使用 --cap-add ... ...
阅读全文
java JVM HeapMemory中Used, Committed and Max的区别
JAVA
2023-03-07 14:27:02
558
0
首先要明确的是 used < committed < max,单位是 bytes;initJVM启动时从操作系统申请的初始内存,也即JVM参数中-Xms设置的值used(使用的内存)实际使用的内存,包括未被回收的不可达对象占用的内存,它可以比初始(init)内存小committed(申请的内存)操作系统层面为当前JVM进程保留的内存可能等于或大于used内存;JVM可以从操作系统申请很多内存,但是不一定真正使用它,但是操作系统可以为java进程保留相关内存可能小于init内存,因为JVM可以回收内存并将其归还给操作系统如果JVM需要更多内存,它将尝试从操作系统申请,此时commit... ...
阅读全文
查看 java jvm 进程线程的命令 适用于其他
工具软件 Linux JAVA
2023-02-28 18:08:58
489
0
top -H -p 1* H - Threads mode (summarize as tasks)* p - PID monitoring (show all processes)* d - Delay time 1.5 seconds如: 获取进程为 1 的 线程数ps 命令 -e Select all processes. Identical to -A -T Show thread... ...
阅读全文
java8 jvm 中建议设置的启动参数 JAVA_OPTS
JAVA
2023-02-28 15:17:16
789
0
JAVA_OPTS="-Xms4096m -Xmx4096m -XX:MetaspaceSize=256m"这两个参数可以出发 gcXms/ xmx 用来 设置堆内存的大小 -Xmn: 堆内新生代的大小MetaspaceSize 设置 Metaspace 触发 fullgc 的大小还可以设置线程的大小, 默认如下:Linux/x86 (64-bit): 1 MBmacOS (64-bit): 1 MBOracle Solaris (64-bit): 1 MBOn Windows, the JVM uses the system-wide stack si... ...
阅读全文
java8 jvm 中 MetaspaceSize 引起的 full gc
JAVA
2023-02-28 14:48:59
556
0
从Java 8开始,永久代(Perm Generation)被移到了元空间(Metaspace),Metaspace默认没有上限,与物理内存一致。除了堆中的老年代,元空间的resize过程也可以引起Full GC。应用启动时,元空间内存较小,随着应用负载增大,它需要多次resize,而每次resize,就是一次Full GC。这也就解释了为什么有些应用刚启动就触发了N次full gc。对于堆内存,解决resize带来的问题,常见的做法是固定一个较大的Xms,或者直接Xms=Xmx。元空间相关的JVM参数是 -XX:MetaspaceSize=size,这个值是触发元空间Full GC的阈值。原... ...
阅读全文
java JVM 性能调优工具 jinfo 查看修改运行参数
JAVA
2023-02-17 09:43:25
596
0
官网:https://docs.oracle.com/javase/7/docs/technotes/tools/share/jinfo.html Jinfo 是 JDK 自带的命令,可以用来查看正在运行的 java 应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息。jinfo 用法$ jinfo -help
Usage:
jinfo [option] <... ...
阅读全文
java(jvm)堆内存回收流程 minor GC and major GC
JAVA
2023-02-16 14:36:37
544
0
无论使用何种收集器,JVM 都有两种类型的 GC 过程:minor GC major GCyoung 年轻代使用 minor GC 过程触发条件:JVM 无法从 Eden 空间获取分配新对象所需的内存1. 我们假设开始时伊甸园空间上已经有对象(块 01-06)2. 此时应用程序创建一个新对象(07)3. JVM 试图从 Eden 空间中获取所需的内存,但是 Eden 中没有可用空间来容纳我们的对象(07),因此 JVM 触发了 minor GC4. GC 从栈指针开始递归遍历 Eden 中的对象,使用的对象 标记为 alive (Used memory),未使用的... ...
阅读全文
java (jvm)程序内存组成(结构) 堆内存 非堆内存
JAVA
2023-02-16 13:03:57
490
0
1. java 程序内存组成参考:https://deepu.tech/memory-management-in-jvm/ (基于 jdk 11)Heap Memory:堆内存存放 object 和 动态数据参数: Xms(初始) Xmx(最大)分为 Yong 和 OldMeta Space: 元数据class loaders 加载的 class 存放这里之前叫做 永久代 Permanent Generation(PermGen) Space使用 主机内存,默认情况没上限(可使用参数设置),即使超过内存,会移到虚拟内存参数: XX:MetaspaceSize(初始) 和 -... ...
阅读全文
JVM的Xms和Xmx参数设置为相同值有什么好处?
JAVA
2023-02-16 11:15:56
751
0
起因IDEA的VM配置(安装时默认配置)中有如下的配置:# custom IntelliJ IDEA VM options
-Xms2048m
-Xmx2048mXms和Xmx参数定义在启动Java应用程序时,我们通常可以通过参数Xms和Xmx来配置JVM的堆信息。不配置虽然会有默认值,但如果受硬件所限或需对JVM进行调优,则需要根据情况指定这两个参数的值。-Xms:堆内存的最小Heap值,默认为物理内存的1/64,但小于1G。默认当空余堆内存大于指定阈值时,JVM会减小heap的大小到-Xms指定的大小。-Xmx:堆内存的最大Heap值,默认... ...
阅读全文