`

java中引用的种类,防止内存溢出

    博客分类:
  • java
 
阅读更多

java的引用有以下几种:

 

 

  • 强引用:
          只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象
  • 软引用
           软引用用来描述一些还有用,但并非必须的对象。对于软引用关联着的对象,在系统将要发生内存溢出异常之前,将会            把这些对象列进回收范围之中并进行第二次回收。如果这次回收还是没有足够的内存,才会抛出内存溢出异常。提供了
           SoftReference类来实现软引用。
  • 弱引用
          弱引用也是用来表述非必需对象的,但是它的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集           之前。当垃圾收集器工作时,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。提供了WeakReference类           来实现弱引用的。
  • 虚引用
          虚引用也称幽灵引用或者幻影引用,它是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存          时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是希望能在这个对象被收集器回收收到一个系统通知。提供了PhantomReference类来实现虚引用。

 

分享到:
评论

相关推荐

    2_Java虚拟机( 内存结构).pdf

    Java虚拟机(JVM)是一种能够运行Java字节码的虚拟机。它不仅可以运行Java语言编写的程序,还能够...了解这些结构有助于深入理解Java程序是如何在JVM上运行的,同样对于优化程序性能、避免内存溢出等都有重要的意义。

    Java基础复习笔记02对象状态、引用种类、垃圾回收形式.doc

    - 软引用:软引用对象在内存充足时不会被回收,但在内存不足时会被回收,以防止系统出现内存溢出。 - 弱引用:弱引用对象无论内存是否充足,只要检查到没有强引用指向它,就会被回收。 - 虚引用:虚引用并不直接...

    sun公司的Java内部培训教材

    6. 内存溢出:了解内存溢出错误,以及如何通过优化代码和配置JVM参数来预防。 三、Java集合框架 7. 集合接口:List、Set、Queue等,理解它们的特点和应用场景。 8. 集合实现:ArrayList、LinkedList、HashSet、...

    Java卡虚拟机的安全攻击技术及防御技术研究.pdf

    文档中还总结了Java卡在安全方面面临的各种威胁,这些威胁可能包括但不限于:缓冲区溢出攻击、注入攻击、非法内存访问、跨站脚本攻击、恶意代码执行、拒绝服务攻击等。这些威胁对Java卡虚拟机的运行安全构成直接的...

    Java基础知识总结

    5. **安全性**:Java 有着严格的安全机制,能够防止恶意代码如蠕虫病毒的侵入,比如禁止运行时堆栈溢出和未授权的内存访问。 6. **可移植性**:Java 程序可以一次编写,到处运行,这得益于 Java 虚拟机 (JVM) 的存在...

    JAVA面试题集

    `final`关键字在Java中用于声明不可变对象、常量或方法,防止被重新赋值或重写。它可以用来确保对象引用的不变性,提高并发安全性,也可以帮助垃圾回收器优化内存管理。 7. 内存区域: Java程序运行时有堆和栈两...

    JAVA 面试题集 pdf

    - 表示严重错误,通常是程序无法处理的情况,如内存溢出、系统级错误等。 - 通常不需要程序显式处理这些错误。 2. **`Exception`:** - 表示需要程序处理的异常情况,如输入/输出错误、空指针异常等。 - 程序员...

    Java项目开发代码Review常见问题实例.doc

    - 内存泄漏:确保对象的生命周期得到正确管理,防止内存泄漏。 ### 二.3 编程易错误区及系统健壮性 **二.3.1 空指针错误的引发** - 未初始化的对象引用:在使用对象前确保已正确初始化。 - 对null值的操作:在...

    JAVA面试题,Java是一种面向对象的编程语言,由Sun Microsystems公司(现属Oracle公司)于1995年推出

    Java中的内存溢出通常由于以下几个原因造成: PermGen Space不足(存放类信息的空间),可以通过调整JVM参数解决;Java堆内存过载,导致过多对象创建,可以通过调整堆大小限制来防止;线程创建过多,超出系统资源...

    java虚拟机总结

    - **概述**:堆是Java虚拟机管理的内存中最大的一块,被所有线程共享,主要用于存放对象实例。 - **目的**:几乎所有对象实例都在这里分配内存。 5. **方法区** - **概述**:方法区存储已被虚拟机加载的类信息、...

    博客中文章的例子源码demo2

    3. **内存泄漏**:解释什么是内存泄漏,如何产生,以及如何检测和防止内存泄漏,比如使用智能指针、垃圾回收机制等。 4. **内存优化**:如何通过合理的数据结构和算法设计,减少不必要的内存占用,提高内存效率。 ...

    JAVA面试核心总结,包括jvm等知识点,覆盖面比较广

    在Java面试中,掌握核心知识点是至关重要的,其中包括对JVM(Java虚拟机)的理解。JVM是Java程序运行的基础,它负责解析.class文件,执行字节码,并提供了内存管理、垃圾回收等机制。理解JVM的工作原理对于优化程序...

    阿里巴巴java规范手册

    - **内存溢出**:识别和处理`OutofMemoryError`,优化内存使用。 - **引用类型**:了解软引用、弱引用和虚引用的区别,灵活运用在缓存和资源管理中。 6. **日志记录**: - **日志级别**:正确设置日志级别,如`...

    java最新面试宝典

    - 内存溢出与内存泄漏的区别。 - GC算法的种类及其优缺点。 #### 三、类加载 **3.1 类的加载过程** - **知识点概述:** - 加载阶段:找到类的二进制数据并转化为`Class`对象。 - 验证阶段:确保类文件符合规范...

    北京以太全景科技有限公司Java笔试题.zip

    21. **内存溢出**: 如堆溢出、栈溢出,以及如何优化内存使用。 22. **类加载机制**: 双亲委派模型,类的加载、验证、准备、解析和初始化过程。 通过上述知识点的深入理解和实践,应试者能够更好地应对北京以太全景...

    Java面试题资料大全专对程序员刚毕业的提供帮助

    - 内存泄漏:识别和防止内存泄漏的策略。 4. **集合框架** - List、Set、Queue:了解ArrayList、LinkedList、HashSet、TreeSet等数据结构的特点和使用。 - Map接口:HashMap、TreeMap、ConcurrentHashMap的特性...

    C 语言最大难点揭秘

    本文将深入探讨这个主题,介绍内存管理的重要性,内存错误的分类,以及如何采取有效的策略来避免这些问题。 首先,良好的内存管理对于 C 语言至关重要。内存错误可能导致各种问题,如程序运行速度减慢,直至最终...

    Java面试题 .docx

    5. **内存溢出**: - OOM(Out Of Memory)发生在JVM的各个区域,当内存耗尽时抛出。 6. **ClassLoader**: - 负责加载类到JVM,实现类的动态加载和版本控制。 7. **==与equals的区别**: - ==比较基本类型时...

    超级有影响力霸气的Java面试题大全文档

    比如说内存溢出。不可能指望程序能处理这样的情况。 exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 19、同步和异步有何异同,在什么情况下分别使用他们?举例说明。 ...

Global site tag (gtag.js) - Google Analytics