类加载机制与jdk智能调优命令

类加载机制与JDK调优监控工具

类的生命周期

1.加载
将.class文件从磁盘读到内存
2.连接
2.1 验证
验证字节码文件的正确性
2.2 准备
给类的静态变量分配内存,并赋予默认值
2.3 解析
类装载器装入类所引用的其它所有类

3.初始化
为类的静态变量赋予正确的初始值,上述的准备阶段为静态变量赋予的是虚拟机默认的初始值,此处赋予的才是程序
编写者为变量分配的真正的初始值,执行静态代码块
4.使用
5.卸载

类加载器的种类

启动类加载器(Bootstrap ClassLoader)
负责加载JRE的核心类库,如JRE目标下的rt.jar,charsets.jar等
扩展类加载器(Extension ClassLoader)
负责加载JRE扩展目录ext中jar类包
系统类加载器(Application ClassLoader)
负责加载ClassPath路径下的类包
用户自定义加载器(User ClassLoader)
负责加载用户自定义路径下的类包

全盘负责委托机制
当一个ClassLoader加载一个类的时候,除非显示的使用另一个ClassLoader,该类所依赖和引用的类也由这个
ClassLoader载入
双亲委派机制
指先委托父类加载器寻找目标类,在找不到的情况下载自己的路径中查找并载入目标类
双亲委派模式的优势
沙箱安全机制:比如自己写的String.class类不会被加载,这样可以防止核心库被随意篡改
避免类的重复加载:当父ClassLoader已经加载了该类的时候,就不需要子CJlassLoader再加载一次

JVM性能调优监控工具

查看JVM的参数

查看java系统属性

 类加载统计

●Loaded: 加救class的数量
●Bytes: 所占用空间大小
●Unloaded: 未加载数量
●Bytes: 未加载占用空间
●Time:时间

垃圾回收统计

●soC: 第一个Survvor区的空间
●S1C:第二个Survvor区的空间
●SOU: 第一个Survivor区的使用空间
●S1U: 第二个Survlvor区的使用空间
. EC: Eden区的总空间
●EU: Eden区的使用空间
●OC: Old区的总空间
●OU: Old区的已使用空间
●MC:元空间的总空间
. MU:元空间的使用空间
●CCSC:压缩类的总空间
●CCSU: 压缩类的使用空间
●YGC:年轻代垃圾回收次数
. YGCT:年轻代垃圾回收消托时间
●FGC:老年代垃圾回收次数
●FGCT:老年代垃圾回收消耗时间
●GCT:垃圾回收消耗总时间

堆内存统计

●NGCMN:新生代最小空间
●NGCMX:新生代最大空间
●NGC:当前新生代空间
●S0C:第一个Sur1wor区空间
●S1C:第二个Survvor区空间
●EC: Eden区的总空间
●OGCMN:老年代最小空间
●OGCMX:老年代最大空间
●OGC:当前老年代空间
●OC:当前老年代空间
●MCMN:最小元空间大小
●MCMX:最大元空间大小

●MC:当前元空间大小
●CCSMN:最小压缩类空间大小
●CCSMX:最大压缩类空间大小
●CCSC:当前压缩类空间大小
●YGC: 年轻代化GC次数
●FGC:者年代GC次数

原文地址:https://www.cnblogs.com/wnlsq/p/12240729.html

时间: 2024-07-30 13:57:14

类加载机制与jdk智能调优命令的相关文章

JVM的垃圾回收机制详解和调优

JVM的垃圾回收机制详解和调优 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作. 1.JVM的gc概述 gc即垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存.java语言并不要求jvm有gc,也没有规定gc如何工作.不过常用的jvm都有gc,而且大多数gc都使用类似的算法管理内存和执行收集操作. 在充分理解了垃圾收集算法和执行

详解性能调优命令

1.ps 通常我们会使用ps -aux查看用户启动的进程 USER:进程的属主 PID:进程的ID %CPU:进程占CPU的百分比 %MEM:进程占内存的百分比 VSZ:进程使用的虚拟内存量(KB) RSS:进程使用的固定内存量(KB) TTY:进程运行的终端,若与终端无关,则显示?.若为pts/0等,则表示由网络连接主机进程 STAT:进程的状态 D:不可中断的静止 R:正在执行中 S:静止状态 T:暂停静止 Z:不存在但暂时无法消除 W:没有足够的记忆体分页可分配 <:高优先序的行程 N:低

盘点linux系统中的12条性能调优命令。

导读 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长期处于耗尽的状态,那么这篇文章将着实的能帮助到你,如果没有也请先收藏起来. 1,hdparm查看硬度读取速度: 命令:hdparm -t /dev/sda5 打印:Timing buffered disk reads: 254 MB in 3.01 seconds = 84.34 MB/sec 说明:能够指定具体

Java虚拟机(五):JVM调优-命令篇

运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer等等,但是在生产环境出现问题的时候,一方面工具的使用会有所限制,另一方面喜欢装X的我们,总喜欢在出现问题的时候在终端输入一些命令来解决.所有的工具几乎都是依赖于jdk的接口和底层的这些命令,研究这些命令的使用也让我们更能了解jvm构成和特性. Sun JDK监控和故障处理命令有jps jstat j

JVM垃圾回收机制总结(7) :调优方法

JVM调优工具 Jconsole,jProfile,VisualVM Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用.对垃圾回收算法有很详细的跟踪.详细说明参考这里 JProfiler :商业软件,需要付费.功能强大.详细说明参考这里 VisualVM :JDK自带,功能强大,与JProfiler类似.推荐. 如何调优 观察内存释放情况.集合类检查.对象树 上面这些调优工具都提供了强大的功能,但是总的来说一般分为以下几类功能 堆信息查看 可查看堆空间大小分配(年

JVM的GC机制及JVM的调优方法

内存管理和垃圾回收是JVM非常关键的点,对Java性能的剖析而言,了解内存管理和垃圾回收的基本策略非常重要. 1.在程序运行过程当中,会创建大量的对象,这些对象,大部分是短周期的对象,小部分是长周期的对象,对于短周期的对象,需要频繁地进行垃圾回收以保证无用对 象尽早被释放掉,对于长周期对象,则不需要频率垃圾回收以确保无谓地垃圾扫描检测.为解决这种矛盾,Sun JVM的内存管理采用分代的策略. 1)年轻代(Young Gen):年轻代主要存放新创建的对象,内存大小相对会比较小,垃圾回收会比较频繁.

JVM调优命令-jmap

jmap JVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件. jmap不仅能生成dump文件,还可以查询finalize执行队列.Java堆和永久代的详细信息,如当前使用率.当前使用的是哪种收集器等.[内存分析] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2

JVM调优命令-jstat

2.jstatJVM Statistics Monitoring Tool,是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据.[性能分析] 命令格式 1 jstat [options] VMID [interval] [count] jstat [options] VMID [interval] [count] 参数 [options] : 操作参数,一般使用 -gcutil 查看gc情况VMID : 本地虚拟机进程ID,即当前运行的j

JVM调优命令-jps

JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程. 命令格式 1 jps [options] [hostid] options参数-l : 输出主类全名或jar路径-q : 只输出LVMID-m : 输出JVM启动时传递给main()的参数-v : 输出JVM启动时显示指定的JVM参数 其中[options].[hostid]参数也可以不写 1 2 3 4 5 6 7 8 [[email protected] bin]# jps -l -m 15795