如何确定java应用是否健康?

1 个回答

  • 大小姐
    重新审视自己,什么使你快乐,什么就是眼下最珍贵。
    1. ``` jstat -gcutil <pid> <interval> <count> //其中,<pid>是你的Java进程的PID,<interval>是收集统计信息的间隔(以秒为单位),<count>是收集的次数。 例如,以下命令每秒收集一次统计信息,总共收集10次: jstat -gcutil 12345 1s 10 ``` 比如 健康吗?现在 ```[root@localhost ~]# jstat -gcutil 154493 1s 10 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 28.09 0.00 46.82 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 50.07 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 55.27 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 58.35 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 62.11 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 65.36 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 69.41 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 76.70 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 80.38 10.58 93.58 91.27 18 1.728 4 0.803 2.531 28.09 0.00 84.27 10.58 93.58 91.27 18 1.728 4 0.803 2.531 ``` 整体上看,Java应用程序的垃圾回收(GC)情况还算健康。 以下是对各项参数的简要解释: S0 和 S1(幸存者0区和幸存者1区)的利用率相对较低,这是好的,说明你的应用程序的对象的生命周期大都不是特别长。 E(伊甸区)的利用率在增长,但还没有达到100%,这是正常的。伊甸区用来存放新创建的对象,只有当其利用率达到100%时,Minor GC(小型垃圾回收)才会触发。 O(老年代)的使用率只有10.58%,这意味着应用程序中的长期存活的对象并不多,这通常是一个好的迹象。只有当O的使用率达到或接近100%时,Full GC(全面垃圾回收)才会被触发,这个过程可能会让应用程序暂时无法响应。 M(元数据区)和CCS(压缩类空间)的使用率都维持在90%以上,这表明你的应用程序加载了相当多的类。不过,只要这两个数字保持稳定,就不会出现问题。 YGC(年轻代GC次数)和YGCT(年轻代GC总时间)的数值都相对较低,这表明Minor GC发生的频率和时间都控制得很好。 FGC(全面垃圾回收次数)和FGCT(全面垃圾回收所用时间)的数值也相对较低,这表明Full GC并不常发生,这是个好的迹象。 ### 1.FGCT的单位是啥? 在jstat工具的输出中,"FGCT"代表Full Garbage Collection Time,即全垃圾收集时间。这是指Java虚拟机进行full GC所花费的总时间。单位是秒。 这个时间是自JVM启动以来所有full GC所花费的时间总和。如果这个数值持续增长,可能意味着你的应用可能有内存泄漏的问题,或者是GC配置需要调整,因为应用程序花费太多时间在GC上面,这可能会影响应用的性能。 ### 2.YGCT这个单位也是秒是吧?数值不是表示的累加值吧? "YGCT"(Young Generation Garbage Collection Time)的单位也是秒。这个数值表示的是Java虚拟机对Young Generation(新生代)进行垃圾收集所花费的总时间。 和"FGCT"一样,这个数值是自JVM启动以来所有针对Young Generation的GC所花费的时间总和。这也是一个累加的值,所以你会看到它随着时间的推移而增加。 同样,如果你发现这个数值持续增长,可能需要调查一下是否有内存泄漏的问题,或者GC配置是否需要进行调整。
    编辑于 2023-06-20 16:23 •IP属地 天津
    举报
    评论
    收藏