java在1.5引入java.lang.instrument,你可以由此实现一个java agent,通过此agent来修改类的字节码即改变一个类。本文中,会通过java instrument 实现一个简单的profiler。当然instrument并不限于profiler,instrument可以做很多事情,

它类似一种更低级,更松耦合的AOP,可以从底层来改变一个类的行为,你可以由此产生无限的遐想。

接下来要做的事情,就是计算一个方法所花的时间,通常我们会在代码这么写:
在方法开始开头加入long stime = System.nanoTime();
在方法结尾通过System.nanoTime()-stime得出方法所花时间,你不得不在你想监控的每个方法中写入重复的代码,
好一点的情况,你可以用AOP来干这事,但总是感觉有点别扭,这种profiler的代码还是打包在你的项目中,

java instrument使得这更干净。

1) 写agent类
package org.toy; import java.lang.instrument.Instrumentation; import java.lang.instrument.ClassFileTransformer; public class PerfMonAgent { static private Instrumentation inst = null; /** * This method is called before the application’s main-method is called, * when this agent is specified to the Java VM.

java instrument 初探相关推荐

  1. java入参为方法_Java命令注入原理结合Java Instrument技术(FreeBuf首发)

    一.前言 命令注入:恶意用户构造恶意请求,对一些执行系统命令的功能点进行构造注入,从而达到执行命令的效果. 二.演示环境搭建 这里采用springboot+swagger搭建一个模拟的web环境:启动 ...

  2. Java AIO初探(异步网络IO)

    Java AIO初探(异步网络IO) 原文: http://www.blogjava.net/killme2008/archive/2009/09/20/295743.html 按照<Unix网 ...

  3. java并发初探ConcurrentSkipListMap

    java并发初探ConcurrentSkipListMap ConcurrentSkipListMap以调表这种数据结构以空间换时间获得效率,通过volatile和CAS操作保证线程安全,而且它保证了 ...

  4. java并发初探ConcurrentHashMap

    java并发初探ConcurrentHashMap Doug Lea在java并发上创造了不可磨灭的功劳,ConcurrentHashMap体现这位大师的非凡能力. 1.8中ConcurrentHas ...

  5. java并发初探ThreadPoolExecutor拒绝策略

    java并发初探ThreadPoolExecutor拒绝策略 ThreadPoolExecuter构造器 corePoolSize是核心线程池,就是常驻线程池数量: maximumPoolSize是最 ...

  6. java并发初探CyclicBarrier

    java并发初探CyclicBarrier CyclicBarrier的作用 CyclicBarrier,"循环屏障"的作用就是一系列的线程等待直至达到屏障的"瓶颈点&q ...

  7. java并发初探CountDownLatch

    java并发初探CountDownLatch CountDownLatch是同步工具类能够允许一个或者多个线程等待直到其他线程完成操作. 当前前程A调用CountDownLatch的await方法进入 ...

  8. java并发初探ReentrantWriteReadLock

    java并发初探ReentrantWriteReadLock ReenWriteReadLock类的优秀博客 ReentrantReadWriteLock读写锁详解 Java多线程系列--" ...

  9. Java agent初探

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"获取公众号专属群聊入口 来源:阿里巴巴中间件 在本篇文章中,我会通过几个简单的程 ...

最新文章

  1. DOT:视觉SLAM的动态目标物跟踪
  2. tcp linux 报文内容,linux – tcpdump – 只是逐行输出数据包内容
  3. .net随笔-vb.net 系统计时器
  4. 排序算法 —— 快速排序
  5. word公式插件_再也不用担心我的公式写不出来了:一款公式输入神器实测
  6. Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
  7. sqlserver note
  8. 【操作系统】连续内存分配策略
  9. Keepalived原理详解
  10. Boring Game (10 分)
  11. Kali-linux-2020 sqli-labs环境配置(含网上最全Less-29在Kali上的配置)
  12. 软件工程:第一章笔记下
  13. 关于嵌入式的技术竞争力
  14. ubuntu下修复U盘并格式化
  15. oracle程序窗口,oracle窗口函数的使用
  16. 广州大学计算机綦科简历,基于八叉树空间分割的三维点云模型密写(綦科,谢冬青,2011)...
  17. Flutter plugin not installed this adds Flutter specific functionality
  18. Niagara—— 概述
  19. Day36.SQL详解
  20. 网络安全知识点梳理(二)

热门文章

  1. 火山视窗CEF浏览器实现简单的网页填表
  2. 网络购物成瘾,你该如何戒掉?
  3. 教你如何自学UI设计
  4. LwIP协议栈-TCP控制块(tcp_pcb)详解
  5. BP算法实现--minst手写数字数据集识别
  6. 发那可g10_连载七|FANUC神奇的G10编程指令功能使用方法
  7. csdn 强制登录否则无法查看全文的解决办法
  8. matlab滤波器滤不掉,带通滤波器无法在matlab中过滤不需要的频率
  9. [转]联想Win7 SP1 32位/64位OEM系统[官方原版]
  10. 智能家居中的物联网技术体系架构与发展现状