jStat

面试之Java虚拟机专题

我们两清 提交于 2020-04-10 07:52:23
说下对象的创建方法?对象的内存布局?对象的访问定位? 四种不同的方法创建对象 1、用new语句创建对象,这是最常用的创建对象的方式; 2、调用对象的clone方法。   MyObject obj =new MyObject();   MyObject objs= obj.clone(); 使用clone方法克隆一个对象的步骤:   1)被克隆的类要实现Cloneable接口;   2)被克隆的类要重写clone方法; 1 class Obj implements Cloneable{ 2 private Date birth = new Date(); 3 public Date getBirth(){ 4 return birth; 5 } 6 public void setBirth(){ 7 this .birth= birth; 8 } 9 public void changeDate(){ 10 this .birth.setMonth(4 ); 11 } 12 public Object clone(){ 13 Obj o = null ; // o指向了复制后的新对象 14 try { 15 o=(Obj) super .clone(); // 实现浅复制 16 } catch (CloneNotSupportedException e){ 17 e

Java - JVM - jstat 简单使用

拟墨画扇 提交于 2020-04-07 12:32:27
概述 jstat 的简单使用 背景 jvm 是面试经常被问到的东西 面试造火箭 的典型 面试完了, 基本不用, 所以就会被渐渐忘记 我一直觉得, 这些监控工具, 是 性能调优 的基础 看都看不清, 后续根本没法做 环境 OS win10 Java 1.8.0_201 demo Spring Boot 2.1.3 shell win10 cmd 1. 准备 jps 作用 查找 java 进程的 pid jstat 命令需要基于 java 进程的 pid 2. jstat 概述 jstat 是什么 jstat Java 工具 统计 运行时 jvm 的信息 信息 内存信息 堆栈容量 gc 信息 编译信息 其他 3. 基本格式 概述 命令基本格式 这里只讲 本地调试 格式 # option 是命令行选项 # pid 是目标进程的 pid # interval 是时间间隔, 单位是 ms > jstat <option> <pid> [interval] 例子 # 假设 pid 是 18436 # 1. 没有 interval, 只执行一次 > jstat -class 18436 # 2. interval = 1000ms, 每隔 1s 执行一次 # 可以通过使用单位 s 来调整, 这个我就不细说了 > jstat -class 18436 1000 4. 简单使用 概述 简单使用命令

JVM调优实战分析

|▌冷眼眸甩不掉的悲伤 提交于 2020-04-06 18:14:42
一、查看服务器项目JVM参数以及参数分析 1、jps 命令 : 列出系统中所有的 Java 应用程序以及PID 如下图所示,26647就是我部署在服务器的一个小项目的 PID 2、jmap命令:查看堆的使用情况 如下所示,数据为未调整的默认值 [root@VM_49_159_centos ~]# jmap -heap 26647 Attaching to process ID 26647, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.162-b12 using thread-local object allocation. Mark Sweep Compact GC Heap Configuration: (堆的结构配置) MinHeapFreeRatio = 40 ( 空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. ) MaxHeapFreeRatio = 70 ( 空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制. ) MaxHeapSize = 482344960 (460.0MB) (堆的最大值) NewSize = 10485760 (10.0MB) (初始年轻代大小) MaxNewSize =

JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解

☆樱花仙子☆ 提交于 2020-03-26 06:43:02
JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo使用详解 https://www.cnblogs.com/baihuitestsoftware/articles/6382733.html jps 查看所有的jvm进程,包括进程ID,进程启动的路径等等。 我自己也用PS,即:ps -ef | grep java jstack 观察jvm中当前所有线程的运行情况和线程当前状态。 系统崩溃了?如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。 系统hung住了?jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。 jstat jstat利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对进程的classloader,compiler,gc情况; 特别的,一个极强的监视内存的工具,可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量,以及加载类的数量。 jmap 监视进程运行中的jvm物理内存的占用情况,该进程内存内

jvm监控命令-jstat

混江龙づ霸主 提交于 2020-03-26 03:49:37
jstat 用于查看服务器上某个服务的GC情况。 一般使用方式 jstat –gcpid 或 jstat –utilpid 时间间隔—每个一定时间(指定的时间间隔)输出一次进程pid的内存情况及gc情况。 类加载统计(-class) Loaded Bytes Unloaded Bytes Time 加载class的数量 所占用空间大小 未加载数量 未加载占用空间 时间 [lillcol@node1 lillcol]# jstat -class 22363 Loaded Bytes Unloaded Bytes Time 19410 39919.5 112 155.0 10.18 编译统计(-compiler) Compiled Failed Invalid Time FailedType FailedMethod 编译数量 失败数量 不可用数量 时间 失败类型 失败的方法 [lillcol@node1 lillcol]# jstat -compiler 22363 Compiled Failed Invalid Time FailedType FailedMethod 25021 2 0 71.64 1 org/apache/spark/ContextCleaner$$anonfun$org$apache$spark$ContextCleaner$$keepCleaning$1

Zabbix监控JVM内存

空扰寡人 提交于 2020-03-22 17:50:58
上篇最后提到了jstat,jstat可以查看统计JVM内存信息,那么结合Zabbix,就可以监控多实例的JVM内存了。 1、下面两个脚本部署在被监控主机: vm.py 用于JVM实例PID查找,ps命令亦可以换成jdk自带的jps工具: #!/usr/bin.python # import os import json data = {} tcp_list = [] port_list = [] command = "ps -ef | grep weblogic.Server | grep -v \"grep web\" | awk '{print $2}'" lines = os.popen(command).readlines() for line in lines: port=line.strip('\n') # port = line.split(':')[1] port_list.append(port) for port in list(set(port_list)): port_dict = {} port_dict['{#PID}'] = port tcp_list.append(port_dict) data['data'] = tcp_list jsonStr = json.dumps(data, sort_keys=True, indent=4) print

二、JVM堆内存分布及GC过程

自古美人都是妖i 提交于 2020-03-16 15:09:03
某厂面试归来,发现自己落伍了!>>> 1、内存分配与设置 堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指 定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。 非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。 由Permanent Generation和Code Cache组成 Permanent Generation保存虚拟机自己的静态(refective)数据 主要存放加载的Class类级别静态对象如class本身,method,field等等,permanent generation空间不足会引发full GC Code Cache 用于编译和保存本地代码(native code)的内存 JVM内部处理或优化 JVM内存限制(最大值) JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然 可控内存空间有4GB,但是具体的操作系统会给一个限制

jstat查看jvm内存占用情况

一个人想着一个人 提交于 2020-03-14 15:13:02
命令 jstat -gc 18573 5000 18573 是jvm进程号PID 5000 表示 间隔5s打印一次 S0C:年轻代中第一个survivor(幸存区)的容量 (字节) S1C:年轻代中第二个survivor(幸存区)的容量 (字节) S0U :年轻代中第一个survivor(幸存区)目前已使用空间 (字节) S1U :年轻代中第二个survivor(幸存区)目前已使用空间 (字节) EC :年轻代中Eden(伊甸园)的容量 (字节) EU :年轻代中Eden(伊甸园)目前已使用空间 (字节) OC :Old代的容量 (字节) OU :Old代目前已使用空间 (字节) MC:metaspace(元空间)的容量 (字节) MU:metaspace(元空间)目前已使用空间 (字节) YGC :从应用程序启动到采样时年轻代中gc次数 YGCT :从应用程序启动到采样时年轻代中gc所用时间(s) FGC :从应用程序启动到采样时old代(全gc)gc次数 FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s) GCT:从应用程序启动到采样时gc用的总时间(s) 来源: oschina 链接: https://my.oschina.net/liangxiao/blog/3194787

jvm笔记

坚强是说给别人听的谎言 提交于 2020-03-10 22:13:34
jhat jmap jstat jstack 来源: oschina 链接: https://my.oschina.net/u/3730149/blog/3191260

JVM源码分析之jstat工具原理完全解读

余生长醉 提交于 2020-03-10 15:49:28
概述 jstat是hotspot自带的工具,和java一样也位于 JAVA_HOME/bin 下面,我们通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况,具体我们可以通过 jstat -options 来看我们到底支持哪些类型的数据,譬如JDK8下的结果是: -class-compiler -gc -gccapacity -gccause -gcmetacapacity -gcnew -gcnewcapacity -gcold -gcoldcapacity -gcutil -printcompilation jstat的输出 jstat大家用得其实挺多的,最常见的用法是jstat -gcutil,输出如下: ~ ᐅ jstat -gcutil 692 1000 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 41.49 59.79 83.66 89.92 78.74 295 5.436 10 3.855 9.291 0.00 41.49 59.80 83.66 89.92 78.74 295 5.436 10 3.855 9.291 0.00 41.49 59.80 83.66 89.92 78.74 295 5.436 10 3.855 9.291 0.00 41.49 59.80 83.66 89