spring 手动销毁对象
我使用tomcat服务器,部署了spring mvc项目
我配置了一个ApplicationListener,在监听到ContextRefreshedEvent时,开启了一个线程importThread。
现在我在监听到ContextClosedEvent时,关闭线程,同时销毁掉线程相关的对象,结果线程结束了,但是有个对象始终无法销毁。
在applicationListener中,我注入了这个对象:
@autowired
ImportMainThread importServiceMainThread;
定义了一个线程:
Thread importThread;
启动线程:
importThread = new Thread(importServiceMainThread);
importThread .start();
类ImportMainThread 的定义:
@Component
public class ImportMainThread implements Runnable{
public static Logger log = Logger.getLogger("ImportMainThread ");
@autowired
//其他注入的对象
public void run(){
//执行导入任务;
}
}
我通过visualVM查看,tomcat管理里stop应用时,其他所有对象都已销毁,唯独这个对象还有一个实例。
我在项目里面搜索了ImportMainThread 的所有引用,并且在监听到ContextClosedEvent时,将所有引用都已置为了null。
这个对象没有销毁导致的结果就是,tomcat stop或者reload时,内存没有一点降低。
请问我该如何销毁这个对象,有手动销毁的方式吗?(公司电脑不联网,无法贴完整的代码,请谅解)