JRebel是一个Java类热启动的工具,使Java开发(特别是Web开发)可以实现像PHP开发那样即时刷新的效果,这样再也不用修改java文件之后频繁的去重启Web Server了,用起来非常的顺手。
最近JRebel好像更新也非常频繁,8月份刚发布3.0版本,11月份就发布了3.5版本,而且这个新版本用下来非常给力,针对了spring增加了许多扩展(默认是打开的),比如可以实时更新所有Spring的配置文件等等,手痒痒的同学可以下载下来试试。BTW,我用的是正式版,:)
安装的方法也非常简单,就在vm后面增加一个-noverify 参数:
-noverify -javaagent:E:\UsualTools\JRebel\jrebel.jar
当然还是记得将上面的路径修改成你自己本机JRebl的存放路径。
上面的都不是本文的重点,这里需要说一下的就是,或许3.5版本增加的功能特性太多的缘故(特别是针对Spring),刚开始启动的时候速度非常的慢,开始的时候我怀疑是spring插件的问题,于是使用 -Djrebel.spring_plugin=false将spring插件关闭了,之后启动的速度可以接受了,但是运行程序的时候速度非常非常的慢,点一个按钮要等半天。如果不使用JRebel的话程序运行正常,所以排除了程序本身的问题。
刚开始一直在怀疑是不是新版本的问题,因为用2.x和3.0的时候都很正常,所以在这方面查了很多资料,都没有发现好的解决办法。后来,无意中发现程序出现了“java.lang.OutOfMemoryError: PermGen space”的错误,突然才想到是否是给JRebel分配的内存太小了,于是使用下面的参数增加了内存:
-noverify -javaagent:E:\UsualTools\JRebel\jrebel.jar -Xmx512M -Xms512M -XX:MaxPermSize=1024m
然后在运行的时候发现速度是非一般的快啊,使用JRebel的spring插件之后启动速度也非常的块了,看来就是这个问题,后来在JRebel官方上的Q&A上面也得到了印证。
需要说明一点的是,如果上面的参数无法启动,需要将内存数设置小一些;还有,增加Eclipse的内存对JRebl是没有任何效果的,虽然现在想起来和可笑,但是当时在这个方面也浪费了不少时间。BTW,Eclipse3.3+内置了一个内存查看的工具,可以在“Windows”-"Preferences"中,选择左边的”General",然后选择右边的"Show heap status"。
参考资料:
I’m getting Java.lang.OutOfMemoryError: PermGen space!??
Javarebel启动程序java.lang.OutOfMemoryError: PermGen space问题的解决
加了-Xmx512M -Xms512M -XX:MaxPermSize=1024m这一段怎么发布报错啦
将-XX:MaxPermSize设置为256m再试试
新版的jrebel该怎么弄呢?
如果使用嵌入式的方式运行的话也是这样设置,如果使用插件的方式需要在插件里面进行参数的设置。