Java中gcRoot和引用类型】的更多相关文章

看到一个老问题,Java是如何判定回收哪些对象的? 答:从gcRoot根搜索不可达,且标记清理一次之后仍没有被复活的对象,会被认定为垃圾对象进行清理.注意在Java中没有对象的作用域,只有对象的引用的作用域.Java垃圾回收没有采用引用计数算法,因为它不好解决循环引用问题.Java垃圾算法实际上是标记出那些对象是被引用在用的,其它没被标记的就是没用的可以回收,而不是直接找出哪些对象是没用的. 那么,哪些对象可以作为gcRoot呢? 它其实是一组根引用,主要包括虚拟机栈中的局部变量表(实际就是所有…
java中四种引用类型  今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在网上查资料,感觉收获颇多,现记录如下. 对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地…
对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级别由高到低依次为:强引用.软引用.弱引用和虚引用. ⑴强引用(StrongReference)强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出Out…
8种基本类型  一.4种整型 byte      1字节           -128——127     short     2 字节         -32,768 —— 32,767     int       4 字节          -2,147,483,648 ——2,147,483,647(超过20亿)     long      8 字节   -9,223,372,036,854,775,808——9,223,372,036854,775,807    java中所有的数据类所占…
今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在网上查资料,感觉收获颇多,现记录如下. 对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期.这4种级…
在开发过程中老犯一些低级错误,基础还得好好加强啊...... 今天遇到这样一个问题,我用 "=="来比较两个Long类型的数据,明明数值都相等,可是结果就是false,后来仔细想想,Long在java中是一个引用类型,而long类型是java中的一个基本数据类型,用来表示数值.如果用'=='去比较Long类型数据的话,比较的是它的引用地址,此时即使数值相等,而地址不相同,返回的结果永远是false:而比较long类型是是可以用‘==’比较的,此时比较的是值 Long类型数据比较: 1.…
一.ThreadLocal简介 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性.ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题. ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一乐Threa…
ref: https://www.cnblogs.com/ysocean/p/8482979.html#_label2 ------------------ 这里再给大家普及一个概念,在 Java 中基本类型和引用类型的区别. 在 Java 中数据类型可以分为两大类:基本类型和引用类型. 基本类型也称为值类型,分别是字符类型 char,布尔类型 boolean以及数值类型 byte.short.int.long.float.double. 引用类型则包括类.接口.数组.枚举等. Java 将内存…
上篇文章大致说了下 ReentrantLock 类的使用,对 ReentrantLock 类有了初步的认识之后让我们一起来看下基于 ReentrantLock 的几种细粒度锁实现. 这里我们还是接着用之前 synchronize 关键字加锁实现线程安全 文章中举的账户扣款的例子好了,不过这里为了更贴近系统的功能实现,我们换一下思路,功能实现不变,只是把钱转换成我们系统中的使用的礼券好了,用户每次在系统中购买某项功能需要支付一定的礼券.那既然要实现细粒度锁,那就意味着不同用户账户扣除礼券的操作互不…
Java中的引用类型和垃圾回收 强引用Strong References 强引用是最常见的引用: 比如: StringBuffer buffer = new StringBuffer(); 创建了一个StringBuffer类的对象,并用一个变量buffer存储对这个对象的引用.这就是个强引用. 变量持有的是这个对象的引用.通常,引用是一个对象的存储地址. Java不像C或者C++一样,Java没有取地址符号&,也没有解引用符号*或者->. 引用不同于指针,引用不能与整形进行互相转换,也不能…