zoukankan      html  css  js  c++  java
  • Java内存管理

    1,垃圾收集和内存管理

    GC即垃圾收集机制,是指JVM用于释放那些不再使用的对象所占的内存。

    特点如下:1,垃圾收集的时间是未知的。2,java中提供了一个强行执行垃圾收集的方法-system.gc().

    3,一般采用默认的垃圾收集器,实时性要求比较高的系统采用增量收集器。系统具有较高的配置,有比较多的闲置资源,则可以考虑使用并行标记/清除收集器。4,尽早释放无用对象的引用,通过设置null,暗示垃圾收集器来收集该对象。finalize相当于析构函数,他是垃圾回收器回收一个对象的时候第一个要调用的方法。

    //对象回收前执行,自己编写垃圾回收反馈
    protected void finalize() throws Throwable{
      System.out.println(name+  "被回收");
    }

    java中内存管理就是对象的分配和释放的问题。程序员需要通过关键字new为每个对象申请空间(基本类型除外),所有的对象都在堆中分配。 对象的释放是由GC决定。

    GC的工作原理可以通过有向图解释,可以将对象视为有向图的顶点,将应用关系视为图的有向边,有向边从引用者指向应用对象。每个线程对象可以作为一个图的起始顶点。

    java的内存泄露就是存在一些被分配的对象,这些对象有下面两个特点,1,对象可达,即有向图中存在通路。2,对象无用,即程序以后不会再使用这些对象。

    造成内存泄露的原因?

    忘记释放先前分配的内存,就可能造成内存泄露。为了保证垃圾回收,编程人员通过将对象字段设置为NULL或者从集合(collection)中移除对象。注意:局部变量不需要设置null,会自动消除。

    典型的内存泄露和原因

    1,全局集合

    JNDI数或者一个会话表中,周期性的运行某种清除任务,使用反向链接计数,然后集合负责统计集合中每个入口的反向链接的数目。

  • 相关阅读:
    欧拉筛,线性筛,洛谷P2158仪仗队
    树形DP和状压DP和背包DP
    洛谷P1144最短路计数题解
    洛谷P1373小a和uim大逃离题解
    LCA
    108. Convert Sorted Array to Binary Search Tree
    230. Kth Smallest Element in a BST
    94. Binary Tree Inorder Traversal
    144. Binary Tree Preorder Traversal
    236. Lowest Common Ancestor of a Binary Tree
  • 原文地址:https://www.cnblogs.com/smuxiaolei/p/7702296.html
Copyright © 2011-2022 走看看