- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
加速Java应用开发
加速Java应用开发2—加速项目调试启动速度
本文介绍关于热部署/热替换。之前也有很多人介绍过这些知识,不过比较分散,我写此篇的目的是聚合它们。本文以HotSpot虚拟机为例。
上一篇Spring/Hibernate提升速度的文章《加速spring/hibernate应用调试时启动速度》,主要是通过一些技巧来提升启动速度,还是做不到如类的热部署/热替换。因此再写一篇关于热部署/热替换的文章。之前也有很多人介绍过这些知识,不过比较分散,我写此篇的目的是聚合它们。本文以HotSpot虚拟机为例。
首先让我们来看两个概念:热部署、热替换
热部署
即在容器运行过程中,重新加载类或重新加载整个项目。常见的解决方案就是使用自定义ClassLoader;
部分加载的示例:如JSP、Play框架;
重新加载整个项目的示例:如Tomcat、Jetty;默认都是定期检测class文件是否有修改,如果有,先卸载当前容器,再重新加载整个项目(reload)。
这种情况缺点很明显:只能重新装载整个类/整个项目,不能只替换类中的部分。
热替换
热替换相对于之前的热部署的优势就是可以替换如方法体、增删方法/字段等类内部局部替换,而不是整个类。常见的实现方式:HotSpot虚拟机的HotSwap、HotSwap补丁、
HotSwap
只能热替换方法体。只要在eclipse或idea等开发工具中开启debug模式即可使用。
HotSwap补丁 DCEVM
该补丁增强了HotSwap,可以增加、删除类字段、方法和改变类的父类。也必须在debug模式下调试。具体使用可以参考如下文章,在此就不重复了
HYPERLINK /team/jm/archives/641 \t _blank hotswap 用户手册
HYPERLINK /blog/experience_1368/dce-hot-swap-usage-and-problem-solution.html \t _self DCE使用的问题及其解决方法
我测试时使用的是jdk1.6.0_25,没有问题,不支持jdk1.6.0_26,且我测试jdk7_13和jdk7_21没成功。官网介绍说其是基于JDK7-b102编译的。估计我下的这两个版本不对。
java agent +?Instrumentation
1、Spring-Loaded
SpringSource官网发布的,用在Grails 2中,允许:添加/修改/删除 方法/字段/构造器。类型/方法/字段/构造器上的注解也允许修改,且也可以新增/删除/修改enum类型的值。
使用方式:
-javaagent:pathTo/springloaded-{VERSION}.jar?-noverify?
如在执行tomcat/jetty时的VM参数中指定如上配置即可。无需在debug模式下执行。如果使用的是如idea可以按Ctrl+Shift+F9编译当前类/Ctrl+F9编译所有更改的类。
2、Fakereplace?
类似于Spring-Loaded,具体可参考其官网:
它的好处是,支持一些框架:
Seam 2
Weld?(基本集成)
JSF
Metawidget
Hibernate?(实际是如果实体修改了,重启整个EMF,也不是很快)
Resteasy
具体使用也是在VM参数中指定:
-javaagent:/path/to/fakereplace.jar??
可以到如下地址下载jar包,或自己编译
其提供了一些配置,如:
-javaagent:/path/to/fakereplace.jar=packages=com.mycompany.myclasses,log=trace???
packages?需要热替换的包
log?可选,支持trace,debug,info,error
index-file?fakereplace索引为的路径。Fakereplace在第一次运行后存储这个文件以加速启动
dump-dir 当热替换时,Dump类到这个目录,仅当开发Fakereplace时有用
port?Fakereplace监听的端口
它俩的实现很类似,Spring-Loaded使用了CGLIB来实现代理,FakeReplace使用了Javassist来实现的。
还有如Agent Smith,不过N久没维护了。?其实Play框架也是使用了Instrumentation,但是它是整个替换,所以没有归类过来。
以上的都有个缺点:如我在写spring项目时,无法动态加载如@RequestMapping配置,或动态加载配置文件。这些在强大的JRebel中都是支持的。
JRebel
JRebel是我目前简单的最强大的热替换/热部署工具。但缺点是收费的,而且不
您可能关注的文档
- 六钦路监理规划(终稿).doc
- 六项业务三个营销机会秘籍大全.docx
- 六项行动计划绩效评价汇报材料(修改稿3).doc
- 兰利煤矿初步设计(修改)说明书文稿.doc
- 兰州大学本科毕业论文(设计)指导手册兰州大学教务处.doc
- 兰州大学计算机基础2014年9月考试考前辅导资料张麟2014.doc
- 兰州市安宁区数字城管项目实施方案.doc
- 兰州市数字化城市管理系统项目建设方案.doc
- 兰州轨道交通规划.doc
- 兰州高校社团大型辩论赛联谊活动(最终策划).doc
- 2025河南郑州市金融岛省管国企招聘5人笔试备考试题附答案.docx
- 2025河南郑州市第十九高级中学国际部教师招聘1人备考题库最新.docx
- 2025河南航空港发展投资集团有限公司社会招聘11人笔试参考题库最新.docx
- 2025河南豫能控股股份有限公司及所管企业第二批社会招聘18人模拟试卷附答案.docx
- 2025河南郑州体育产业集团招实习生40人笔试参考题库附答案.docx
- 2025河南豫能控股股份有限公司及所管企业第二批社会招聘18人模拟试卷附答案.docx
- 2025河南郑州体育产业集团招实习生40人笔试参考题库附答案.docx
- 2025河南豫能控股股份有限公司及所管企业第二批社会招聘18人模拟试卷附答案.docx
- 2025河南豫能控股股份有限公司及所管企业第二批社会招聘18人模拟试卷附答案.docx
- 2025河南省水利勘测有限公司招聘21人笔试备考试题附答案.docx
原创力文档


文档评论(0)