java雪人程序_java的几种引用类型
简单看了一下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的几种引用类型相关推荐
- java雪人程序_JAVA雪人小程序
刚学JAVA,有问题还请高人指教! /** * @ Snowman.java * @author * @c2009/8/21 */ import java.awt.*; import javax.sw ...
- java的引用类型有哪些_Java的四种引用类型有哪些?
学过Java的人们都知道,Java的类型一般有两种,一种是基本数据类型,另一种是引用数据类型.其中,基本数据类型的值通常储存与栈内存,用于对该类型的对象进行存储;而引用数据类型则在存储堆中对需要引用的 ...
- java万能引用_Java的四种引用方式
java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象. java对象的引用包括 强引用,软引用,弱引用,虚引用 Java中提供这四种引用类型主要有 ...
- java工程窗口程序_java工程开发之图形化界面之(第二课)
上一节主要是讨论小的应用程序,在这里我们将采用一种全新的方式来重新编写它. 在这里我们注重关注JFrame和JOptionPane.这些类提供了在JAVA应用程序使用图形的方法以及在JAVA程序中对I ...
- java小程序_Java小程序
java小程序 An applet is a special kind of Java program that runs in a Java enabled browser. This is the ...
- java网络程序_Java 网络程序
Java在网络编程这个地方做的很好,java的主要目的也是为了网络而生的,它能方便的访问网络上的资源.我们这节课来介绍网络通讯的两种机制:URL通信机制,Socket通信机制. URL表示了Inter ...
- java金字塔程序_Java中的金字塔模式程序
java金字塔程序 Pattern programs are used a lot in interviews to understand the logical thinking abilities ...
- java中四种常用的引用类型_java中四种引用类型
JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用(Strong Reference).软引用(Soft Reference).弱引用(Weak Reference).虚引用 ...
- 3种设计模式java小程序_Java设计模式之单例模式(3种实现方式)
饿汉模式 public class Singleton {//实例化private static Singleton instance=new Singleton();private Singleto ...
最新文章
- 中key的用途_Micro Focus Operations Bridge Manager中的多个(RCE)漏洞
- 【机器学习基础】数学推导+纯Python实现机器学习算法23:kmeans聚类
- PHP页面间参数传递的四种方式
- 使用MVC模式制作游戏-教程和简介
- 转:QQ登录时错误码说明及解决办法
- Linux用户不在sudoers文件中
- 基于分数阶的图像边缘细节检测
- HDU2050 折线分割平面【切割平面】
- linux基本命令之chattr与lsattr
- Vegas的新功能——触摸编辑
- Kali Linux 安装网易云音乐打不开的解决方法
- 将大文本文件分割成多个小文件
- 深度学习在目标跟踪中的应用
- unity3D AR涂涂乐制作浅谈
- MSDC 4.3 接口规范(9)
- 我会java什么梗_抖音不会真的有人什么梗 不会真的有人不会吧不会吧别恶心我梗意思及出处...
- 软件加入使用时间_Adobe CC 2020 系列软件更新(Adobe Zii 2020 5.2.1)| Mac软件天堂
- 自定义考勤统计日历(一)
- 计算机cat的应用,计算机辅助系统
- 如何将lvm卷移动到另一台服务器中