• 技术文章 >java >java基础

    java内存泄漏的解决方法

    小妮浅浅小妮浅浅2021-07-19 10:01:03原创3835

    1、单例引起的内存泄漏。,由于单例的静态特性使其生命周期与应用的生命周期相同较长,因此如果一个对象不再需要使用,单例对象如果有该对象的引用,则该对象不能正常回收,存储器泄漏。

    解决方法,单例的生命周期和应用一样长,防止内存泄漏。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    // 使用了单例模式

    public class AppManager {

        private static AppManager instance;

        private Context context;

        private AppManager(Context context) {

            this.context = context;

        }

        public static AppManager getInstance(Context context) {

            if (instance != null) {

                instance = new AppManager(context);

            }

            return instance;

        }

    }

    2、容器使用时的内存泄露,内存泄露指的是在对vector操作完成之后,执行下面与vector无关的代码时,如果发生了GC操作,这一系列的object是没法被回收的,而此处的内存泄露可能是短暂的,因为在整个method()方法执行完成后,那些对象还是可以被回收。

    解决方法很简单,手动赋值为null即可:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    void method(){

        Vector vector = new Vector();

        for (int i = 1; i<100; i++)

        {

            Object object = new Object();

            vector.add(object);

            object = null;

        }

        //...对v的操作

        vector = null;

        //...与v无关的其他操作

    }

    以上就是java内存泄漏的解决方法,这两种情况都会引发内存的泄漏,大家在了解其产生的原因后,可以根据不同的情况进行解决。更多编程基础知识学习:python学习网

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java内存泄漏
    上一篇:java数据结构 下一篇:java如何检查内存泄漏

    相关文章推荐

    • Java内存交互的规则• java内存结构的组成• java内存模型的组成• Java内存模型的并发处理• Java内存交互如何操作• Java内存屏障是什么• java内存屏障有哪些类型• Java内存分配是什么• java内存泄漏

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网