DCEVM:通过修改JVM在运行时支持对已加载的类进行无限次重定义

dcevm

DCEVM是原DCEVM项目的一个分支。该项目的目的是为OpenJDK HotSpot 7/8和Oracle JVM维护增强的类重定义功能。

功能特性

hotspot/.hg/patches/ 包含对全部受支持版本的修补。每个修补程序通过将前缀fulllight与OpenJDK HotSpot标记连接起来命名。full补丁支持完全重新定义功能(例如,包括删除超类)。light补丁更容易维护,但它们只支持有限的功能(通常,类层次结构的添加是正常的,删除就不是正常的)。

HotSpot标签是与HotSpot Mercurial仓库(Java 8/Java 7)中的标记名称相对应。

下载

Light版本:

完整版本:

完整版本支持更多功能(例如删除超类),但是更难维护。因此,它只支持早先OpenJDK版本。Light版本支持更少的功能(然而,它相比于OpenJDK开箱即用的重定义功能还是先进),并且更容易保持与OpenJDK HotSpot的更新。

安装DCEVM

  • 替换目标JRE中的libjvm.so/jvm.dll/libjvm.dylib
  • 包含Dynamic Code Evolution字符串

或者你可以使用gradle脚本安装DCEVM:

  • 运行./gradlew installFastdebug -PtargetJre=$JAVA_HOME/jre./gradlew installProduct -PtargetJre=$JAVA_HOME/jre
  • DCEVM将安装为“备选”JVM。 要使用它,请添加-XXaltjvm=dcevm

或者,在Debian和Ubuntu系统上,DCEVM可以与openjdk-7-jre-dcevm软件包一起安装,并通过添加-dcevm命令行参数来调用:

  • 运行apt-get install openjdk-7-jre-dcevm
  • 运行java -dcevm -version,包含Dynamic Code Evolution字符串

快速上手

  • 运行java -jar installer.jar
  • 按照说明将DCEVM安装到现有的JDK/JRE中

测试DCEVM

想要在IDE中进行测试,需要以下操作:

  • 运行./gradlew agent:build构建重定义代理代码
  • 添加JVM参数以使用重定义代理(-javaagent:agent/build/libs/agent.jar
  • 如果同时安装(-XXaltjvm=dcevm),请为DCEVM VM添加JVM参数

官方网站:http://dcevm.github.io/
开源地址:https://github.com/dcevm/dcevm

1 收藏

资源整理者简介:super^糖

一个初入编程世界的工作者 个人主页 · 贡献了5个资源 · 1


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1440 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer