分析 Java Spring 应用程序 [已关闭]
我有一个Spring应用程序,我认为它有一些瓶颈,所以我想用一个探查器来运行它,以测量哪些功能需要多少时间。关于我应该如何做到这一点的任何建议?
我正在运行STS,该项目是一个maven项目,我正在运行Spring 3.0.1
我有一个Spring应用程序,我认为它有一些瓶颈,所以我想用一个探查器来运行它,以测量哪些功能需要多少时间。关于我应该如何做到这一点的任何建议?
我正在运行STS,该项目是一个maven项目,我正在运行Spring 3.0.1
我已经使用Spring AOP完成了这项工作。
有时我需要一个关于在我的项目中执行某些方法需要多少时间的信息(例如控制器的方法)。
在 servlet xml 中,我把
<aop:aspectj-autoproxy/>
另外,我需要为以下方面创建类:
@Component
@Aspect
public class SystemArchitecture {
@Pointcut("execution(* org.mywebapp.controller..*.*(..))")
public void businessController() {
}
}
和剖面器方面:
@Component
@Aspect
public class TimeExecutionProfiler {
private static final Logger logger = LoggerFactory.getLogger(TimeExecutionProfiler.class);
@Around("org.mywebapp.util.aspects.SystemArchitecture.businessController()")
public Object profile(ProceedingJoinPoint pjp) throws Throwable {
long start = System.currentTimeMillis();
logger.info("ServicesProfiler.profile(): Going to call the method: {}", pjp.getSignature().getName());
Object output = pjp.proceed();
logger.info("ServicesProfiler.profile(): Method execution completed.");
long elapsedTime = System.currentTimeMillis() - start;
logger.info("ServicesProfiler.profile(): Method execution time: " + elapsedTime + " milliseconds.");
return output;
}
@After("org.mywebapp.util.aspects.SystemArchitecture.businessController()")
public void profileMemory() {
logger.info("JVM memory in use = {}", (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
}
}
就这样。当我从我的 web 应用程序请求页面时,有关方法执行时间和 JVM 内存使用情况的信息会打印在我的 web 应用程序的日志文件中。