来自外部JAR的对象的Java性能测量

时间:2017-10-27 17:27:24

标签: java performance interceptor

我想测量外部JAR的特定方法的性能(主要是执行时间)。为此,我已经阅读了其他一些帖子,但所有提案都不适合我。

基本上提出了以下建议:

  1. Java Proxies 对我不起作用,因为我无法控制 对象创建和方法调用。对象是 在我们的应用程序之外创建并从中调用 那里。我们只是使用创建的对象并设置一些 配置参数允许在某些地方调用对象 时间由框架。
  2. 构建时的AOP(例如AspectJ):我们正在使用的类已经部署在服务器上,不会由我们构建。
  3. 运行时AOP(例如AspectJ):据我所知,这需要客户不允许的服务器配置。
  4. 对类和手动增强功能进行反编译:客户也不允许这样做,而且很可能是非法的。
  5. 我基本上是在寻找一种解决方案,它允许我将侦听器附加到特定对象的特定方法调用上。有了它,我们就能够衡量性能,甚至可以记录一些上下文信息(例如当前登录的用户)。

    在一个完美的世界中,这可能看起来像这样,只要监控对象存在,监控对象的位置就会受到监控:

    EpicMonitoring.monitor(objectToBeMonitored, "methodToBeMonitored", new AbstractMonitorListener(){
        public void onPreMethodInvocation(Object[] args)[
            // Start time measurement
        };
    
        public void onPostMethodInvocation()[
            // Stop time measurement
        };
    });
    

    当我没有想法时,我希望你们中的一些人可以帮我找到一些想法:)

0 个答案:

没有答案