简单看了一下java的几种引用类型,先贴着,有时间来整理.

import java.lang.ref.SoftReference;

import java.lang.ref.WeakReference;

public class ReferenceTest {

public static void main(String[] args) throws Throwable {

//strong();

soft();

//weak();

}

/**

* 强引用

* (最常见的引用,如果一个对象具有强引用, VM宁愿抛出 OutOfMemoryError 都不会回收它)

*/

public static void strong(){

System.out.println("MAX Mem\t:" + (Runtime.getRuntime().maxMemory()/1024/1024));

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

String[] strs = new String[9999999]; //存放String数组对象的强引用

System.out.println("=======================");

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

String[] strs1 = new String[9999999]; //存放String数组对象的强引用

}

/**

* 软引用

* (不保证对象一定会被回收:不管是否显式gc,内存不足时才会回收)

*/

public static void soft(){

System.out.println("MAX Mem\t:" + (Runtime.getRuntime().maxMemory()/1024/1024));

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

String[] strs = new String[9999999]; //存放String对象的强引用

System.out.println("=======================");

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

SoftReference sr = new SoftReference(strs);//一个软引用指向strs

strs = null;//释放strs的强引用

System.out.println(sr.get());//回收以后通过软引用访问strs(没有被回收)

System.gc();

System.out.println(sr.get());//回收以后通过软引用访问strs(没有被回收)

System.out.println("=======================");

String[] strs1 = new String[9999999]; //存放String对象的强引用

System.out.println(sr.get());//回收以后通过软引用访问strs(已经被回收)

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

}

/**

* 弱引用

* (对象一定会被回收:调用gc后马上回收)

*/

public static void weak(){

System.out.println("MAX Mem\t:" + (Runtime.getRuntime().maxMemory()/1024/1024));

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

String[] strs = new String[9999999]; //存放String对象的强引用

System.out.println("=======================");

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

WeakReference sr = new WeakReference(strs);//一个弱引用指向strs

strs = null;//释放strs的强引用

System.out.println("GC前: \t" + sr.get());//回收以后通过弱引用访问strs(GC前没有被回收)

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

System.gc();

System.out.println("GC后: \t" + sr.get());//回收以后通过弱引用访问strs(GC后已经被回收)

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

System.out.println("=======================");

String[] strs1 = new String[9999999]; //存放String对象的强引用

System.out.println("GC后: \t" + sr.get());//回收以后通过弱引用访问strs(GC后已经被回收)

System.out.println("FREE Mem\t:" + (Runtime.getRuntime().freeMemory()/1024/1024));

}

}

java雪人程序_java的几种引用类型相关推荐

  1. java雪人程序_JAVA雪人小程序

    刚学JAVA,有问题还请高人指教! /** * @ Snowman.java * @author * @c2009/8/21 */ import java.awt.*; import javax.sw ...

  2. java的引用类型有哪些_Java的四种引用类型有哪些?

    学过Java的人们都知道,Java的类型一般有两种,一种是基本数据类型,另一种是引用数据类型.其中,基本数据类型的值通常储存与栈内存,用于对该类型的对象进行存储;而引用数据类型则在存储堆中对需要引用的 ...

  3. java万能引用_Java的四种引用方式

    java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象. java对象的引用包括 强引用,软引用,弱引用,虚引用 Java中提供这四种引用类型主要有 ...

  4. java工程窗口程序_java工程开发之图形化界面之(第二课)

    上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...

  5. java小程序_Java小程序

    java小程序 An applet is a special kind of Java program that runs in a Java enabled browser. This is the ...

  6. java网络程序_Java 网络程序

    Java在网络编程这个地方做的很好,java的主要目的也是为了网络而生的,它能方便的访问网络上的资源.我们这节课来介绍网络通讯的两种机制:URL通信机制,Socket通信机制. URL表示了Inter ...

  7. java金字塔程序_Java中的金字塔模式程序

    java金字塔程序 Pattern programs are used a lot in interviews to understand the logical thinking abilities ...

  8. java中四种常用的引用类型_java中四种引用类型

    JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用(Strong Reference).软引用(Soft Reference).弱引用(Weak Reference).虚引用 ...

  9. 3种设计模式java小程序_Java设计模式之单例模式(3种实现方式)

    饿汉模式 public class Singleton {//实例化private static Singleton instance=new Singleton();private Singleto ...

最新文章

  1. 中key的用途_Micro Focus Operations Bridge Manager中的多个(RCE)漏洞
  2. 【机器学习基础】数学推导+纯Python实现机器学习算法23:kmeans聚类
  3. PHP页面间参数传递的四种方式
  4. 使用MVC模式制作游戏-教程和简介
  5. 转:QQ登录时错误码说明及解决办法
  6. Linux用户不在sudoers文件中
  7. 基于分数阶的图像边缘细节检测
  8. HDU2050 折线分割平面【切割平面】
  9. linux基本命令之chattr与lsattr
  10. Vegas的新功能——触摸编辑
  11. Kali Linux 安装网易云音乐打不开的解决方法
  12. 将大文本文件分割成多个小文件
  13. 深度学习在目标跟踪中的应用
  14. unity3D AR涂涂乐制作浅谈
  15. MSDC 4.3 接口规范(9)
  16. 我会java什么梗_抖音不会真的有人什么梗 不会真的有人不会吧不会吧别恶心我梗意思及出处...
  17. 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
  18. 自定义考勤统计日历(一)
  19. 计算机cat的应用,计算机辅助系统
  20. 如何将lvm卷移动到另一台服务器中

热门文章

  1. 涛哥、星哥即段海涛、赵星本人已不在属于传智播客
  2. 杂散干扰解决办法_6种常见杂散的成因分析及解决办法
  3. 斗战胜佛还是齐天大圣
  4. button/input链接方式全攻略
  5. 爱奇艺黄金VIP会员怎么免费领取升级星钻VIP会员在电视上看奇异果TV?
  6. 解释一下什么是servlet?
  7. CC2541-修改蓝牙名称和mac地址
  8. 基于C#和Sql Server的网上书店管理系统
  9. 离散数学_十章-图 ( 5 ):连通性 - 上
  10. CI information