以下操作中,可能的解决java内存泄露问题的手段有:【多选】( )

  1. 在程序中调用System.gc();
  2. 关掉不再使用的网络/数据库连接;
  3. 在程序中调用finalize();
  4. 清理集合类中的无用对象;
  5. 在程序中调用Runtime.getRuntime().runFinalization();
2 1 收藏


直接登录
最新评论
  • sdkl   2016/02/27

    我是业余的java程序,我选2,4。gc肯定不行的,能gc就不叫内存泄漏了。finalize没用过不知道。

    • 王先生 学生 2016/03/05

      finalize是在对象回收前,gc调用对象的finaliaze方法,明确回收的操作,不能处理内存泄露

  • 我觉得4可以,其他就不知道了

  • helapu 走在RoR的道路上 2016/03/04

    没搞过java,猜一下。排除1、3、4,选2和5吧。他们说4可以,为何我怎么觉得不可以呢。

  • 王先生 学生 2016/03/05

    答案应该为BD
    首先内存泄露是由于某些无用对象无法回收,对象回收的条件是根据
    搜素算法不可达,那么哪些可以作为根呢?
    1.方法区中类静态变量引用的对象
    2.虚拟机栈帧中引用的对象
    3.本地方法栈帧中引用的对象
    4.方法区中常量引用的对象
    从这些根出发不可达的对象就是要回收的对象,答案是A和E都是jvm
    进行垃圾回收,不能从根本上解决内存泄露,答案c只是在垃圾回收
    前做一些操作而已(而且不保证会被执行完)而已.