• Ukieweb

    佳的博客

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

标签: JAVA


jstat --- java jvm gc 异常自动监控脚本 检测以及导出相关信息

启动命令# 运行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

这其实不是什么 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的区别

首先要明确的是 used < committed < max,单位是 bytes;initJVM启动时从操作系统申请的初始内存,也即JVM参数中-Xms设置的值used(使用的内存)实际使用的内存,包括未被回收的不可达对象占用的内存,它可以比初始(init)内存小committed(申请的内存)操作系统层面为当前JVM进程保留的内存可能等于或大于used内存;JVM可以从操作系统申请很多内存,但是不一定真正使用它,但是操作系统可以为java进程保留相关内存可能小于init内存,因为JVM可以回收内存并将其归还给操作系统如果JVM需要更多内存,它将尝试从操作系统申请,此时commit... ...
阅读全文

查看 java jvm 进程线程的命令 适用于其他

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_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 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 查看修改运行参数

官网: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

无论使用何种收集器,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)程序内存组成(结构) 堆内存 非堆内存

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参数设置为相同值有什么好处?

起因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值,默认... ...
阅读全文

老佳啊

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

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

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

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

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