Java运行时间测量:JETM
原创
©著作权归作者所有:来自51CTO博客作者linugb118的原创作品,请联系作者获取转载授权,否则将追究法律责任
戈思汉 高波
Java运行时间测量:JETM
JETM是一个Java程序执行时间测量工具。帮助开发人员定位Java程序中的性能问题。
http://jetm.void.fm/
该jetm是一个免费的jar包,可以放入其他项目中调用api来使用
通常我们自己调试通过System.currentTimeMillis()打出程序段执行的时间,而现在
直接借用jetm就能像log4j 那样随意设置程序段执行时间。
简单地嵌入代码中:
public class BusinessService {
private static final EtmMonitor
etmMonitor = EtmManager.getEtmMonitor();
public void someMethod() {
EtmPoint point = etmMonitor.createPoint("BusinessService:someMethod");
try {
//
// some business code
//
nestedMethod();
} finally {
point.collect();
}
}
public void nestedMethod() {
EtmPoint point = etmMonitor.createPoint("BusinessService:nestedMethod");
try {
// some business code
} finally {
point.collect();
}
}
}
上面的简单模式是要直接嵌入到目的代码中,如果引用AOP的思路,就只要通过配置实现嵌入动作。
比如,和spring集成,本身spring就是依据AOP思路开发的框架。
下面以spring 2.x为例,需要在spring的配置文件中添加jetm namespace和jetm:runtime tag
下面为整个spring的配置文。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jetm="http://jetm.void.fm/schema/jetm_spring_config_1_2"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://jetm.void.fm/schema/jetm_spring_config_1_2 http://jetm.void.fm/schema/jetm_spring_config_1_2.xsd">
<bean id="orderClient"
class="etm.tutorial.fiveminute.client.OrderClient"
autowire="constructor"/>
<bean id="groceryStore"
class="etm.tutorial.fiveminute.store.GroceryStoreImpl"
autowire="constructor"/>
<bean id="stockDao" class="etm.tutorial.fiveminute.store.dao.StockDaoImpl"
autowire="constructor"/>
<!-- Step 4: Add performance monitoring -->
<!--
<jetm:monitoring>
<jetm:bean-pattern>*Dao</jetm:bean-pattern>
<jetm:bean-pattern>groceryStore</jetm:bean-pattern>
</jetm:monitoring>
-->
<!-- Step 5: Enable HTTP console -->
<!--
<jetm:console expanded="true"/>
-->
<jetm:runtime>
<jetm:features>
<!-- Step 6: Alter aggregation chain -->
<!--
<jetm:interval-buffer interval="1000"/>
-->
<!-- Step 7: Log raw performance results -->
<!--
<jetm:raw-data-log type="commons"/>
-->
</jetm:features>
</jetm:runtime>
</beans>
另外集成aop框架AspectWerkz
Aop.xml为
<!DOCTYPE aspectwerkz PUBLIC "-//AspectWerkz//DTD 2.0//EN"
"http://aspectwerkz.codehaus.org/dtd/aspectwerkz2.dtd">
<aspectwerkz>
<system id="weaving-example">
<aspect class="etm.contrib.aop.aspectwerkz.EtmAspectWerkzAspect"
deployment-model="perJVM">
<pointcut name="etmExample" expression="
execution(public * etm.samples.aop.aspectwerkz.*Service.*(..))
OR
execution(public * etm.samples.aop.aspectwerkz.Dao+.*(..))
"/>
<advice name="monitor" type="around" bind-to="etmExample"/>
</aspect>
</system>
</aspectwerkz>
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
修改node运行时内存上限
保存文件重新编译项目就会停止运行,再重新跑项目真的很崩溃...于是了解相关的解决方案;在文章中会总结一下;
Mac 解决方案 Windows