问题描述
web服务器运行终止会调用servlet的destroy方法,strtus2重新了destroy方法,实现了是清除一些用到的对象,既然destroy是停止了,内存信息必然会释放,所以里边的对象也释放了,为啥还要写清除各种用的对象的逻辑呢?
解决方案
解决方案二:
destry运行的时候并没有停止,destry后才会停止吧,应该!
解决方案三:
回复楼上的,清理对象是在destroy方法里实现的逻辑,能走到destroy方法说明服务器肯定正在停止,最终的结果肯定是服务器停止了,如果服务器停止了那说明内存就释放了,那还在destroy方法里边进行清理对象为啥?
解决方案四:
destroy主要是为了释放连接(如数据库连接)和流等资源的。对象在JVM停止后就消失了,不需要显示的清除,当然你显示清除也没有坏处。
解决方案五:
destroy是在servlet被销毁时调用的。servlet被销毁时不一定意味着JVM就会停止,比如tomcat可以动态加载/卸载servlet。servlet被销毁后,其对象有可能被其他对象引用,如果不销毁其使用的资源可能会一直占用。
解决方案六:
回复上楼的,如jboss,tomcat都是运行于jvm之上,如果destroy里不释放对象的话,可能会出现应用服务器停止了,但是对象还咋内存中停留,现象是java.exe一直在运行?还是会依附在其他的exe上?总之应用服务器停止了,内存对象不一定释放?那垃圾回收机制不是进行回收工作吗?
时间: 2024-10-03 19:42:12