来自 操作系统 2020-01-16 14:35 的文章
当前位置: 澳门威尼斯人平台 > 操作系统 > 正文

引用的一个小应用

#include<iostream> 
澳门威尼斯人注册网站,using namespace std;

四种引用类型的概念

定义一个引用,并将其初始化为引用某个变量
类型名&引用名=变量名;

一、四大引用级别的概念

  • 强引用:就是正常的引用,类似于下面:
    • Object object = new Object();,object就是一个强引用,gc是不会清理一个强引用引用的对象的,即使面临内存溢出的情况。
  • 软引用:SoftReference,GC会在内存不足的时候清理引用的对象:
    • SoftReference reference = new SoftReference(object); object = null;
  • 弱引用:GC线程会直接清理弱引用对象,不管内存是否够用:
    • WeakReference reference = new WeakReference(object); object = null;
  • 虚引用:和弱引用一样,会直接被GC清理,而且通过虚引用的get方法不会得到对象的引用,形同虚设,这里弱引用是可以的:
    • PhantomReference refernce = new PhantomReference(object); object = null;

void Swap(int &Num1,int &Num2)    //引用做参数 
{
int Temp=Num1;
Num1=Num2;
Num2=Temp;
cout <<Num1 <<' ' <<Num2 <<endl;
}

强引用 StrongReference

如果一个对象具有强引用,那么垃圾回收器绝对不会回收它,当内存不足时宁愿抛出 OOM 错误,使得程序异常停止。

Object object = new Object(); 即是一个强引用。

int n = 4;
int& r = n; // r引用了 n,r的类型是  int &

二、四大引用级别之间的区别

void Swap1(int a,int b)    //普通参数, 
{

软引用 SoftReference

如果一个对象只具有软引用,那么垃圾回收器在内存充足的时候不会回收它,而在内存不足时会回收这些对象。软引用对象被回收后,Java 虚拟机会把这个软引用加入到与之关联的引用队列中。

某个变量的引用,等价于这个变量,相当于该变量的 一个别名。

强引用和软引用

  • 这个比较简单,软引用只有在内存不足的时候才会被清理,而强引用什么时候都不会被清理(程序正常运行的情况下),即使是内存不足,利用这一个特性,可以做一些缓存的工作,下面的应用会讲到。

本文由澳门威尼斯人平台发布于操作系统,转载请注明出处:引用的一个小应用

关键词: