java 热加载 内存溢出_eclipse里面配置热部署

热部署 : 就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况.

热加载 : 就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的.

在基于Java的实现热部署、热加载的过程中,类装入器扮演着重要的角色。类装入器不能重新装入一个已经装入的类,否则会报java.lang.LinkageError,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。一般debug模式都支持热加载。

2. 在eclipse里面配置热部署

双击tomcat,打开tomcat的配置界面,按如下几个步骤配置eclipse热部署:

1a16951ace732946bee0c57a7af44997.png

2.1 单击“Overview”选项卡

2.1.1 展开“Server Options”,勾选“Serve modules without publishing”选项

5479fd6a3d99103403ec92dce1ac7ee0.png

2.1.2 展开”publishing“,勾选”Automatically publish when resources change“选项。这个配置是用来热部署资源,如:JSP,XML和properties文件等。

3747746798a936cbe04df2934fa05570.png 

0ae7b45239dbd883cec948f6c6a8109d.png

2.2 单击”Modules“选项卡,确保”Auto Reload“是被禁用的

d511fb421c40d53a076600466cd70b1d.png

2.4 以DEBUG模式启动tomcat,热部署在DEBUG模式下才可用

3. 限制

热部署只支持方法内代码的修改,如果添加了新的类或方法依然需要重启才能生效。

为了模拟这种情况,尝试添加了一个新方法,弹出了提示框,JVM不能热切换这个修改的代码。

c35441f022b7841fb8329e283a0f6b57.png

转自:http://blog.csdn.net/zhang854429783/article/details/50086923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值