1.new对象是我们经常使用的,可能我们很少在乎new出来的对象在内存中的占用问题,因为java给我们一个美丽的谎言--------内存自动回收。但作为一名真正的开发者,我们应该尽量使开发出来的程序更高效,可以更充分利用有限的内存,更快地释放那些无用java对象所占用的内存,避免java程序的内存泄漏。 1)强引用
这是java程序中最常见的引用方式,程序创建一个对象,并把对象赋给一个引用变量,这个引用就是强引用。
public class StatusTranfer { public static void test(){ String a = new String("java"); a = new String("java2"); } public static void main(String[] args) { test(); } }
2)软引用
import java.lang.ref.SoftReference; /** * 软引用:当系统内存足够时,它不会被系统回收,当系统内存不足时,会被系统回收 * @author Administrator * */ public class SoftReferrenceTest { public static void main(String[] args) { //实例软引用 SoftReference<Person>[] people = new SoftReference[100]; for(int i = 0; i < people.length; i++){ //通过软引用实例初始化对象 people[i] = new SoftReference<Person>(new Person("名字" + i, i)); } System.out.println(people[2].get()); System.out.println(people[4].get()); System.gc(); System.runFinalization(); System.out.println(people[2].get()); System.out.println(people[4].get()); } } class Person{ String name; int age; public Person(String name, int age){ this.name = name; this.age = age; } public String toString(){ return "person[name=" + name + ", age=" + age + "]"; } }
3)弱引用
import java.lang.ref.WeakReference; /** * 弱引用:当系统回收时,被回收 * @author Administrator * */ public class WeakReferrenceTest { public static void main(String[] args) { WeakReference<Person1>[] people = new WeakReference[100]; for(int i = 0; i < people.length; i++){ people[i] = new WeakReference<Person1>(new Person1("名字" + i, i)); } System.out.println(people[2].get()); System.out.println(people[4].get()); System.gc(); System.runFinalization(); System.out.println(people[2].get()); System.out.println(people[4].get()); } } class Person1{ String name; int age; public Person1(String name, int age){ this.name = name; this.age = age; } public String toString(){ return "person[name=" + name + ", age=" + age + "]"; } }
相关推荐
Java中弱引用软引用虚引用及强引用的区别Java开发Java经验技巧共3页.pdf.zip
前言从JavaSE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决
Java 7之基础 - 强引用、弱引用、软引用、虚引用1
referenceInJava:Java强引用,软引用,弱引用以及虚引用测试项目
(比如新创建一个对象,那么创建它的线程对它就是强可达)\2. 软可达: 只能通过软引用才能访问到对象状态\3. 弱可达: 只能通过弱引用访问时的状态, 十分临近
很早Java API就添加了弱引用(WeakReference)和软引用(SoftReference),但并不是所有的程序员都熟悉这两个概念
在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。...
3.2 如果使用软引用SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该Java对象的回收 3.
在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,...
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用,本篇文章重点介绍一下软引用和弱引用
强引用可以直接访问目标对象强引用所指向的对象在任何时候都不会被系统回收,虚拟机宁愿抛出OOM异常,也不会回收强引用所指向的对象强引用可能导致内存泄漏软引用一个对
前述:除了强引用外,其他引用不是我们所常见的 new出来的对象,而是需要借用3个类SoftReference软引用,WeakReference弱引用,PhantomReference虚引用 1.强引用 概述:即发生OOM(Out Of Memory)内存空间满了也...
主要介绍了Java中强引用,软引用,弱引用概念解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
1.强引用1.强引用 2.软引用(SoftReference) 3.弱引用(WeakReference) 4.虚引用(PhantomReference) 等等;
笔者自己的通俗总结,5分钟搞清楚java中强软弱虚引用的区别^_^
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
主要介绍了详解Java对象的强、软、弱和虚引用+ReferenceQueue的相关资料,需要的朋友可以参考下
java有四种引用类型:强引用、软引用、弱引用、虚引用 四大引用设计作用 因为java的内存分配和内存回收,都是由JVM去负责,一个对象是否可以被回收,主要看是否有引用指向此对象,即可达性分析 设计目的: 可以让...
这是一个简单的demo,只是简单的介绍的说了下,强引用,软引用,弱引用,虚引用