堆代码如下:
同一个对象可以被多个引用指向:
再对如下代码做内存分析:
int占用4个字节,double占用8字节,null占用4字节,空对象占用8字节;
再看一个引用,运行后是10000
给对象都赋值为null之后,没有被引用指向,就会被垃圾回收;再访问会报空指针异常;
局部变量如果退出了函数,内部就会被释放,所以一般局部变量一般不会造成内存泄露:
看一个全局变量的案例:
减慢执行过程,就可以看到内存被回收的过程:
一般看到内存这样变化一般都是有内存泄露:
垃圾回收时候,用户线程一般会停下来,垃圾回收线程不停的运行也会去消耗资源:
打印垃圾回收信息: