Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Jconsole计算吞吐量_Java_Garbage Collection_Jconsole_Throughput - Fatal编程技术网

Java 如何使用Jconsole计算吞吐量

Java 如何使用Jconsole计算吞吐量,java,garbage-collection,jconsole,throughput,Java,Garbage Collection,Jconsole,Throughput,有没有一种方法可以使用JConsole接口计算Java程序给定时间段的垃圾收集吞吐量?例如,我想比较一个程序中的不同功能,以及GC吞吐量在这些功能之间的变化 我已经阅读了Oracle JConsole文档,我能找到的最接近的度量是GC时间,即: GC时间:垃圾收集所花费的累计时间和调用总数。它可能有多行,每行代表Java VM中使用的一个垃圾收集器算法 资料来源: 但这并没有指定开始累积的开始时间。如果我能确定何时开始,我可以自己计算吞吐量 或者,是否有其他方法来计算JConsole上的吞吐量

有没有一种方法可以使用JConsole接口计算Java程序给定时间段的垃圾收集吞吐量?例如,我想比较一个程序中的不同功能,以及GC吞吐量在这些功能之间的变化

我已经阅读了Oracle JConsole文档,我能找到的最接近的度量是GC时间,即:

GC时间:垃圾收集所花费的累计时间和调用总数。它可能有多行,每行代表Java VM中使用的一个垃圾收集器算法

资料来源:

但这并没有指定开始累积的开始时间。如果我能确定何时开始,我可以自己计算吞吐量

或者,是否有其他方法来计算JConsole上的吞吐量

我通常使用两种:

  • 同时,因为不同的工具可以显示不同的结果

    对于您的问题,从应用程序开始就启用了答案-GC日志。因此,当您看到GC时间时,您可以得到吞吐量=总和(GC时间)/总时间


    启用GC日志是指使用-verbose:GC还是-Xloggc:

    不,我是说内部的。澄清是好的

    另外:您知道GC时间代表什么吗:从应用程序启动开始的时间,或者每个给定时间段的时间

    从申请开始。另一种查看GC时间的方法是使用。让我们来看看这个节目:

    public class JStatTest {
    
        public static void main(String[] args) throws Exception {
            for (int i = 0; i < 10; ++i) {
                System.gc();
                System.out.println("Wait...");
                Thread.sleep(1000);
            }
            Thread.sleep(100_000);
        }
    
    }
    
    公共类JStatTest{
    公共静态void main(字符串[]args)引发异常{
    对于(int i=0;i<10;++i){
    gc();
    System.out.println(“等待…”);
    睡眠(1000);
    }
    线程。睡眠(100_000);
    }
    }
    
    我们可以连接jstat(从开始)和jconsole(从接近结束,在循环之后),并看到以下内容:

    这没有启用GC详细日志记录

    要查看总时间,请执行以下操作:


    gcviewer可以根据GC日志为您计算吞吐量。或者,您可以通过从MXBean获取原始数据来自己计算。很好,谢谢,我不知道这个工具!看起来正是我需要的@8472通过启用GC日志,您的意思是使用-verbose:GC还是-Xloggc:?如果是这样的话,那么您是否必须聚合打印到命令行或文件中的结果日志?另外:你知道GC时间代表什么吗:从应用程序启动开始的时间,或者每个给定时间段的时间?谢谢@egorlitvineko这真的很有帮助!遗憾的是,JConsole没有记录应用程序的总运行时间,但我可以从命令行输出中获得它。哦,太棒了!再次感谢,这非常有用!