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

    1.java是如何管理内存的?

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

    这种收支两条线的方法确实简化了程序员的工作。但是同时也加重了JVM的工作。这也是java程序运行速度慢的原因之一。因为GC为了能够正确的释放对象,必须监控每个对象的运行状态,包括对对象的申请、引用、赋值等,GC都需要进行监控。

      (2)监控对象状态是为了更加准确、及时的释放对象,而释放对象的原因是该兑现不再被引用。

    2.什么是java内存泄漏?

      (1)在java中,内存泄漏就是存在一些分配的对象,这些对象有下面的两个特点:

        对象是可达的,即在有向图中,存在通路可以与其相连;

        对象是无用的,即程序以后不会再使用这些对象。

       满足上面的两个条件,即可判定为Java中的内存泄漏,这些对象不会被GC所回收,然而他们却占用内存。

    3.内存泄漏主要是由什么引起的?都有什么样的情况?

      (1)全局集合

      (2)缓存

      (3)classloader

  • 相关阅读:
    [刷题] 1016 部分A+B (15分)
    [刷题] 1022 D进制的A+B (20分)
    [刷题] 1021 个位数统计 (15分)
    [刷题] 1020 月饼 (25分)
    洛谷&BZOJ [POI2016]Korale
    反演魔术---二项式反演
    毒瘤养成记1: 如何卡hash
    多项式全家桶
    [CQOI]排序机械臂
    后缀自动机感性理解
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10499654.html
Copyright © 2011-2022 走看看