当前位置:首页 > 内存 > 正文

JVM内存泄露如何查看和解决(qb内存泄漏)

  • 内存
  • 2024-08-26 10:07:18
  • 2259

一、java存在内存泄露吗?怎样模拟java的内存泄露?

Java也存在内存泄漏问题。虽然JVM会自动回收没有引用的对象,但是如果编码过程中写错了代码,也会出现内存泄漏

例如下面的代码

publicclassTest{
publicstaticvoidmain(String[]args){
Testtest=newTest();
();
test=null;
}
publicThreadthread=newThread(){
publicvoidrun(){
while(true){
}
};
};
}

上面的程序创建了一个新的对象test并启动它,test的成员是一个线程,它是无限循环。随后,test被设置为null。现在感觉好像没有引用了,但实际上测试对象还在内存中。

我们知道内部类会持有外部类,即线程的引用这里也相当于一个内部类,所以这里的线程持有test的引用,导致gc不会回收test,而这里的test并不会占用多少内存,

但是当一些较大的对象(比如由于Android中的活动)被泄露,对程序的影响会更大