什么是dcevm

dcevm(DynamicCode Evolution Virtual Machine)是java hostspot的补丁(严格上来说是修改),允许(并非无限制)在运行环境下修改加载的类文件.当前虚拟机只允许修改方法体(method bodies),decvm,可以增加 删除类属性、方法,甚至改变一个类的父类。原理参见Dynamic Code Evolution for Java dcevm 原理

dcevm 是一个开源项目,遵从GPL 2.0。源文件执行文件都可从官网下载。

注意:Currently, the binary version of the VM is available for the 32-bit and 64-bit Windows VM32-bit Mac OS Soylatte VM (get it here), and 32-bit Linux VM. We plan to add binaries for 64-bit Mac and Linux VMs.Contact us, if you are interested in them.

安装

警告: 该补丁目前还处于试验阶段. 当该补丁用于调试java程序使用时,是相当稳定的。但不提倡在生产环境中使用该补丁。

1.下载安装文件 (下载地址

2.执行安装文件

#windows
> java -jar dcevm-0.2-win.jar
#mac
$ sudo java -jar dcevm-0.2-mac.jar
#linux
$ sudo java -jar dcevm-0.2-linux.jar
选中路径,执行install就完成了。如图:
查看安装程序源码发现安装过程就是将一些文件拷贝到相应的位置:
32 位 windows 使用data/bin/目录下文件 替换掉java下 bin/client/jvm.dll 和 bin/server/jvm.dll ,并将以后的jvm.dll备份到相应目录下。
将data/dcevm.jar 加到/jre/lib/ext/ 目录
64位 windows 复制 data/64/bin/server/jvm.dll到 bin/server/jvm.dll
将data/dcevm.jar 加到/jre/lib/ext/ 目录
32位 linux 如果jre/lib/i386/client/目录存在:
       复制data/lib/i386/client/libjvm.so到 jre/lib/i386/client/libjvm.so
如果jre/lib/i386/server/目录存在:
       复制data/lib/i386/server/libjvm.so到 jre/lib/i386/server/libjvm.so
将data/dcevm.jar 加到/jre/lib/ext/ 目录
64位 linux(暂时不支持) 复制data/64/lib/amd64/server/libjvm.so到 jre/lib/amd64/server/libjvm.so ()
将data/dcevm.jar 加到/jre/lib/ext/ 目录

注意:

dcevm.jar要拷贝到 jre的目录,如果指定java运行在jdk上,这个目录就是jdk下的jre目录.

linux的安装文件中并没有data/64这个目录,意味着64位linux不能正常安装?杯具啊,有时间尝试下看如何处理.

不能在linux下通过图形界面安装的童鞋可手动拷贝文件.

调试java

两种调试方式:

  • debug模式启动java程序 && eclipse remote debug
  • eclipse中debug模式启动程序

注意问题(更多问题补充中):

1.程序中动态添加的static 属性 例如 private static String a = “x”,调用时会显示a是null.

2.在一个正在执行的循环中,有些改变不能生效例如:

public static void main(String[] args) {
for (int i = 0; i < 10000; i++) {
test();//sleep 1s and print something
}
}
修改为:
public static void main(String[] args) {
for (int i = 0; i < 10000; i++) {
test();
System.out.println("xxx");
}
}
xxx是不能输出的,但test方法体内部的修改是可以生效的.
或:
public static void main(String[] args) {
System.out.println("xxx");
for (int i = 0; i < 10000; i++) {
test();
}
}
 

更多test case

参考资料

hotswap 用户手册

Dynamic Code Evolution for the Java HotSpot TM Virtual Machine

hostspot&hostswap(包括dcevm原理介绍)

Dynamic Code Evolution for Java dcevm 原理

官方地址Dynamic Code Evolution VM

hostswap dcevm的更多相关文章

  1. Dynamic Code Evolution for Java dcevm 原理

    在hostswap dcevm中我们对Dynamic Code Evolution VM有了一个简单的了解,这篇文章将介绍Dynamic Code Evolution VM的实现原理. 有两个概念需要 ...

  2. Java资源大全中文版(Awesome最新版)

    Awesome系列的Java资源整理.awesome-java 就是akullpp发起维护的Java资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站 ...

  3. 国外程序员整理的Java资源大全分享

    Java 几乎是许多程序员们的入门语言,并且也是世界上非常流行的编程语言.国外程序员 Andreas Kull 在其 Github 上整理了非常优秀的 Java 开发资源,推荐给大家. 译文由 Imp ...

  4. 基于java平台的常用资源整理

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  5. 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

  6. Java资源大全中文版(Awesome最新版)(转载)

    原文地址:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足 ...

  7. 这里整理了基于java平台的常用资源

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  8. Java资源大全

    古董级工具 这些工具伴随着Java一起出现,在各自辉煌之后还在一直使用. Apache Ant:基于XML的构建管理工具. cglib:字节码生成库. GlassFish:应用服务器,由Oracle赞 ...

  9. Github优秀java项目集合(中文版) - 涉及java所有的知识体系

    Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容 ...

随机推荐

  1. Cracking The Coding Interview 9.6

    //原文: // // Given a matrix in which each row and each column is sorted, write a method to find an el ...

  2. python验证代理IP

    接上一篇保存的IP地址,进行验证 # -*- coding: utf-8 -*- import requests from threading import Thread import threadi ...

  3. page指令import属性实例

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  4. SpringMVC配置及使用

    SpringMVC基本配置 SpringMVC是基本请求响应模式的框架. 在项目中集成SpringMVC框架首先需要导入相关的jar包,所需包具体如下: commons-dbcp.jar common ...

  5. SharePoint Framework 企业向导(九)

    博客地址:http://blog.csdn.net/FoxDave 管理SPFx解决方案的容量 所有部署到租户的SPFx解决方案必须被租户管理员审批通过.这是通过上传SPFx包(.sppkg)到A ...

  6. Paxos工程实践

    Overview 是不是感觉看了这篇 Paxos算法 感觉完全没看懂?2333我也是 之前Paxos算法在工程实现的过程中,会遇到非常多的问题. Chubby Google Chubby是一个大名鼎鼎 ...

  7. L312 难看懂的

    There are few sadder sights than 8 pile of fan letters ,lovingly decorated with hand drawings,suffer ...

  8. day 58 关于bootstrap

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. pyx文件 生成pyd 文件用于 cython调用

    转于:https://www.2cto.com/kf/201405/304168.html 1. 初衷 最近学用python,python不愧是为程序员考虑的编程语言,写起来很快很方便,大大节省开发效 ...

  10. 前端笔记 (1.HTML)

    近来一直在学习一些web的知识,主要是包括html,css,js和php,记录一下笔记,希望向和我一样刚学的朋友能提供帮助 这些笔记知识主要来源于菜鸟教程和w3school.我搭建了一个wampSer ...