Btrace调试Java代码

之前有一个同学提到了一个需求,就是需要在程序跑起来之后查看程序的调用情况,和一些参数变化,当然,如果 没有部署到生产环境中,我们可以用强大的Eclipse使用Debug模式进行单步调试。但是一旦部署到了生产环境中, 我们的强大的调试工具就失去了作用。 于是我们可以参考使用JVisualVM中的Btrace。当然本文章的大部分内容都有参考周志明的深入理解Java虚拟机 接下来的内容就是简单的介绍下Btrace的一个简单的示例。 当然,使用JVisualVM连接JVM的简单步骤我们就简单的跳过了。我们直接上程序例子。 首先是我们的Example代码。 代码很简单,之所以需要在执行之前加入scanner,只是因为我们需要为之后的Btrace嵌入做一个缓冲。然后可以 手动的形式启动我们的代码。 ... [阅读全文]

Java字节码增强技术

动态编译 关于这个问题,我们需要先了解下Java的运行原理,一般情况下,打开惯用的IDE, 编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了。这就行了,但是, 如果你的代码在运行之前不能确定呢(就像OJ)?或者说,你写过JavaBean,你知道写那些setter||getter 方法是多么的蛋疼,大多数的时间和代码都浪费在这些上面了。人生可贵,所以我们需要用更少的时间 写完我们的代码,用更多的时间去陪我们的妹子。 所以在这边,我介绍一种比较简单的代码解决办法。一种办法是动态编译代码,用机器去补充代码, 然后动态编译,之后就可以看到完整的代码了,这个办法很类似于play框架, 关于动态编译代码,我这边有几个办法,第一个就是使用JDK6之后自带的API进行简单的实现。以下就是一个简单的办法: ... [阅读全文]