zoukankan      html  css  js  c++  java
  • Java 内存泄漏

    与需手工管理内存的语言(C/C++)相比,Java 具有垃圾回收的功能,但 Java 编程中仍然可能发生内存泄漏,如果过期的对象引用等未被消除的话。Java 内存泄漏发生时,会更加隐蔽,更难debug,这就要求我们在编码阶段,总结常见 Java 内存泄漏的情形,从源头加以避免。

    1. 过期的对象引用(obsolete reference)

    对于 Stack 类的 pop 方法:

    public Object pop() {
        if (size == 0) {
            return new EmptyStackException();
        }
        return elements[--size];
    }

    似乎没有什么问题。注意,如果一个栈是先增长,然后收缩,则从栈中弹出来的对象就不会被当做垃圾回收。修改也十分简单:

    public Object pop() {
        if (size == 0) {
            return new EmptyStackException();
        }
        Object result = elements[--size];
        elements[size] = null;        // 消除过期引用
        return result;
    }
  • 相关阅读:
    006 date find
    005 输出重定向 > >>命令 echo命令 tail命令
    总结,一周,
    mokey 学习
    树状,
    定制,
    萌芽,
    到底为什么,
    会,
    “恋爱”,一路走来,
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421311.html
Copyright © 2011-2022 走看看