美文网首页Java基础研究
JVMTI简介---背景和概述

JVMTI简介---背景和概述

作者: 绿皮多驱小火车 | 来源:发表于2017-11-28 18:53 被阅读136次

首先提出一个问题:我们如何与JVM交互?

我想想,JDK应该是我们对接JVM的最主要手段。还有JProfiler,IBM的MAT,Jconsole的输入参数经常是dump文件,使用堆分析器或者 Dump 文件分析器等工具进行研究,查看当前运行态堆(Heap)中存在的实例整体状况来诊断问题,看起来不是不是通过JDK与JVM交互的。

基于一般的设计思路:定义一个接口,内部提供一些实现,同时对外提供一些扩展的入口,JVM作为一个系统,也有这方面的考虑,来实现一些特殊的定制(到底是什么样的定制呢?带着疑惑,我们一起在后面去寻找答案),这套机制就是JVMTI(JVM Tool Interface)。

JVMTI是 Java 虚拟机所提供的 native 编程接口。之前版本有JVMPI(Java Virtual Machine Profiler Interface)和 JVMDI(Java Virtual Machine Debug Interface)。从这个 API 的发展历史轨迹中我们就可以知道,JVMTI 提供了可用于 debug 和 profiler 的接口。同时,在虚拟机接口也增加了监听(Monitoring),线程分析(Thread analysis)以及覆盖率分析(Coverage Analysis)等功能(Java 5/6 中增加)。正是由于 JVMTI 的这些特性,基于它,实现了 Java 调试器,以及其它 Java 运行态测试与分析工具。

注意⚠️:JVMTI 并不一定在所有的 Java 虚拟机上都有实现,不同的虚拟机的实现也不尽相同。不过在一些主流的虚拟机中,比如 Sun 和 IBM,以及一些开源的如 Apache Harmony DRLVM 中,都提供了标准 JVMTI 实现。

刚才说的有点抽象,具体如何落地呢?怎么去实现自己的定制呢?

JVMTI是一套本地代码接口,因此使用JVMTI需要与C/C++以及JNI打交道。开发时一般采用简历一个Agent的方式来使用JVMTI,agent使用JVMTI函数,设置一些回调函数,从JVM中获取当前的运行态信息,需要的时候,可能去修改JVM的运行态(JVM提供了的入口)。因为使用的是C/C++,所以agent一般会编译成一个动态链接库来使用。JAVA体系的一种生效方式是在程序启动的时候来加载它(启动加载模式),还有一种运行时加载模式(1.5后提供,活动加载模式)。具体的配置参数如下:

-agentlib:agent-lib-name=options

-agentpath:path-to-agent=options

Agent 即 JVMTI 的客户端(对外而言,更像JVM提供的API),它和执行 Java 程序的虚拟机运行在同一个进程上,因此通常他们的实现都很紧凑,他们通常由另一个独立的进程控制,充当这个独立进程和当前虚拟机之间的中介,通过调用 JVMTI 提供的接口和虚拟机交互,负责获取并返回当前虚拟机的状态或者转发控制命令。

相关文章

  • JVMTI简介---背景和概述

    首先提出一个问题:我们如何与JVM交互? 我想想,JDK应该是我们对接JVM的最主要手段。还有JProfiler,...

  • Vpay白皮书

    目录 基本概述 1.1 关于区块链1.2 Vpaycoin诞生的背景和意义 团队简介 Vpaycoin的技术特征和...

  • 基于jvmti定位java异常信息

    背景描述JVMTI(JVM Tool Interface)位于jpda最底层,是Java虚拟机所提供的native...

  • JVMTI基本介绍

    在研究JVM-Sandbox时接触到了JVMTI这个底层工具,整理下 JVMTI是什么说到JVMTI,必须说一下J...

  • java debug 体系-JVMTI

    1 jvmti 构成、介绍 JVMTI(JVM Tool Interface) 位于jpda 最底层, 是Ja...

  • 机器学习实践应用

    简介 人工智能 机器学习 深度学习 机器学习概述 机器学习概述 背景 图灵 发展现状 数据现状 Facebook瓶...

  • Dubbo背景和简介

    Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM)当网站流量很小时,只需一个应用...

  • Dubbo背景和简介

    Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时,只需一个应...

  • Scrapy的shell调试工具(三)

    一、背景环境 环境介绍 二、概述 Scrapy shell的简介Scrapy shell是Scrapy的交互终端,...

  • 海外Influencer 运营全攻略

    1背景简介 2流程概述 3工具准备 4实操步骤 5分析转化 1背景简介 随着亚马逊等电商平台的要求越来越严格,海外...

网友评论

    本文标题:JVMTI简介---背景和概述

    本文链接:https://www.haomeiwen.com/subject/odiebxtx.html