深入java-软引用实现缓存在实际项目中的用处大不大?

问题描述

软引用实现缓存在实际项目中的用处大不大?

我把以前写的关于弱引用实现java缓存的实例分享给大家,虽然简单但是能说明软引用实现缓存的原理,有助于学习软引用集合等.对于弱引用,软引用,虚引用的概念相信大家已经熟悉了,我们这里就不讲解了,直接上例子.

import java.lang.ref.SoftReference;

/**

  • 软引用测试
    */
    public class SoftReferenceDemo {

    public static void main(String[] args) {

    A a = new A();
    //使用a
    a.test();
    //使用完了a,将它设置为soft引用类型,并且释放强引用
    SoftReference sr = new SoftReference(a);
    a = null;
    
    //下次使用
    if (sr != null) {
        a = (A)sr.get();
        a.test();
    } else {
        //GC由于低内存,已释放a,因此需要重新装载
        a = new A();
        a.test();
        a = null;
        sr = new SoftReference(a);
    }
    

    }
    }
    class A {
    public void test() {
    System.out.println("Soft Reference test");
    }

}

小结:对于在内存中不经常使用,也就是偶尔调用一次的应用可以考虑使用软或则弱引用,以提高垃圾回收效率.

更多的技术帖子来自www.watchmen.cn

时间: 2024-09-27 06:52:29

深入java-软引用实现缓存在实际项目中的用处大不大?的相关文章

深入浅析java web log4j 配置及在web项目中配置Log4j的技巧_java

在上篇文章给大家介绍了Java log4j详细教程,本文给大家介绍java web log4j配置及web项目中配置log4j的技巧.具体详情请看下文吧. 首先给大家提供log4j.jar下载:http://logging.apache.org/log4j/1.2/download.html 一.java web项目使用log4j 1.在web.xml文件中添加 <!-- 配置log4j --> <context-param> <param-name>webAppRoo

Java使用JDBC或MyBatis框架向Oracle中插入XMLType数据_java

先来了解一下什么是XMLType类型. XMLType是Oracle从9i开始特有的数据类型,是一个继承了Blob的强大存在,可以用来存储xml并提供了相当多的操作函数.理论上可以保存2G大小的数据. 那怎么样通过java来插入XMLType类型的数据呢?项目当中采用的是Mybatis,总是出现莫名的异常,都搞不清楚到底是Mybatis的问题还是jdbc本身的问题,所以打算一步步来,先搞定jdbc,再解决Mybatis. JDBC在折腾了半天之后,发现jdbc操作主要有3种方法: 一.在Java

Java内存管理之软引用(Soft Reference)

软引用(Soft  Reference)的主要特点是具有较强的引用功能.只有当内存不够的时候才回收这类内 存,因此在内存足够的时候,他们通常不被回收.另外,这些引用对象还能保证在Java  抛出 OutOfMemory异常之前,被设置为null.他可以用于实现一些常用资源的缓存,实现Cache的功能,保证最大限 度的使用内存而不引起OutOfMemory异常. 下面是软引用的实现代码: import java.lang.ref.SoftReference; public class softRe

Java中用软引用阻止内存泄漏

在本文中,他将解释 Reference 对象的另外一种形式,即软引用(soft references),用于帮助垃圾收集器管理内存使用和消除潜在的内存泄漏. 垃圾收集可以使 Java 程序不会出现内存泄漏,至少对于比较狭窄的 "内存泄漏" 定义来说如此,但是这并不意味着我们可以完全忽略 Java 程序中的对象生存期(lifetime)问题.当我们没有对对象生命周期(lifecycle)引起足够的重视或者破坏了管理对象生命周期的标准机制时,Java 程序中通常就会出现内存泄漏.例如,上一

Java 如何有效地避免OOM:善于利用软引用和弱引用

想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题.下面是本文的目录大纲: 一.了解 强引用.软引用.弱引用.虚引用的概念 二.进一步理解软引用和弱引用 三.如何利用软引用和弱引用解决OOM问题 如果有不正之处,希望谅解和批评指正,不胜感激. 请尊重作者劳动成果,转载请标明原文链接:   http://www.cnblogs.com/dolphin0520/p/378

安卓listview加载网络图片时,当时用了软引用之后,是不是就不用在使用二级缓存机制了

问题描述 安卓listview加载网络图片时,当时用了软引用之后,是不是就不用在使用二级缓存机制了 软引用不就是避免OOM的吗,和二级缓存机制的作用是一样的吧,可能二级缓存会更打程度的减少访问网络的次数吧,,但是如果在一个listview加载网络图片的项目中,是不是这二者选择一个用就行了? 解决方案 首先,ListView加载图片,使用什么软引用什么的,其实都是避免oom,那么你可以做到一下几点 1.使用缓存,至于你说的两种,任意一种都是可以的,起码起到了作用 2.当ListView去网络读取图

Java中的软引用,弱引用和虚引用

在Android的图片处理中,碰到的一个非常普遍的问题便是OOM错误 为此网上也有很多例子,而在之前的一篇转载里 提到了ListView中加载图片的ImageLoader,而其中有一处,使用到了名为SoftPreference的类 这是Java中的一个类 也就是所谓的软引用 在查询了相关的资料以后 会发现SoftPreference的特性,非常适合用来处理OOM引起的问题 下面是百度文库的一篇转载: SoftReference.Weak Reference和PhantomRefrence分析和比

Java中的强引用、软引用、弱引用和虚引用

Java中的强引用.软引用.弱引用和虚引用  原文链接:http://aaronfu.net/?p=9995 从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 1.强引用本章前文介绍的引用实际上都是强引用,这是使用最普遍的引用.如果一个对象具有强引用,那就类似于必不可少的生活用品,垃圾回收器绝不会回收它.当内存空 间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止

java弱引用(WeakReference)和SoftReference的区别以及在android内存处理的作用

weakReference一般用来防止内存泄漏,要保证内存被VM回收  softReference的话,好像多用作来实现cache机制.   WeakReference:  弱引用对象,它们并不禁止其指示对象变得可终结,并被终结,然后被回收.弱引用最常用于实现规范化的映射.   假定垃圾回收器确定在某一时间点上某个对象是弱可到达对象.这时,它将自动清除针对此对象的所有弱引用,以及通过强引用链和软引用,可以从其到达该对象的针对任何其他弱可到达对象的所有弱引用.同时它将声明所有以前的弱可到达对象为可