`
endual
  • 浏览: 3508661 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 虚拟机引用的分类

    博客分类:
  • java
 
阅读更多
Java 中引用的四种类型
1.	强引用
2.	软引用
3.	弱引用
4.	虚引用

我们在家里面,有好多物品都是有用的,比如我们的碗筷,几乎是每天都要用到得,或者是水,厕所等等。但是,有时候,我们家里面有的是可以有可以没有的,比如我们吃完饮料以后的可乐瓶,有时候瓶子可以装一些东西,有用,我们就留着,但是有时候没有放的地方,我们就扔掉掉了。

在java中,引用也是类似的。
我们一般用的就是强引用。如果一个对象具有强引用,那就类似于我们在生命中不可缺少的
生活用品,垃圾回收绝对不会去回收它的。当内存空间不足的时候,虚拟机宁愿抛出异常,也不会去回收它的内存的。

软引用
如果一个对象只是具有软引用的,那就类似于我们在生活中可有可无的生活用品,如果内存空间足够的话,垃圾回收就不会去回收它的,如果是内存空间不足的话,那么就回收它了。只要没有被垃圾回收掉的对象就是可以程序使用的,软引用可用来实现内存敏感的高速缓存。软引用可以和一个引用队列联合在一起使用的,如果软引用所引用的对象呗垃圾回收器回收了,那么java虚拟机就会把这个软引用家人到与之关联的引用队列中去的

弱引用
如果一个对象只是具有弱引用的,那就是类似于可有可无的生活用品了。弱引用于软引用的区别在于,如果是弱引用,那么垃圾回收线程扫到话,那么就立刻回收掉弱引用的,只有弱引用的生命周期更加的短的。在垃圾回收线程扫描的时候,锁管辖的内存区域的过程中,一旦发现了之具有弱引用的对象,不管当前的内存空间足够还是不足够,那么就会马上收回这个对象的。

虚引用
虚引用就是虚设的引用了,实际是不存在的,虚引用并不会决定对象的生命周期的。如果一个对象仅仅是持有虚引用的,那么就和没有任何引用一样,在任何时候都可能被垃圾回收期回收的。虚引用主要用来跟踪对象呗垃圾回收器回收的活动的。虚引用于软引用和弱引用的一个区别在于,虚引用必须和引用队列联合使用的,当垃圾回收器准备回收一个对象的时候,如果发现它还是虚引用,就会在回收对象的内存之前把这个虚引用加入到与之关联的引用队列中,程序可以通过判断引用队列中是否已经加入了虚引用来判断是否将要被垃圾回收线程回收掉。


内部类

在一个类中的内部定义的类就叫做内部类。内部类允许把一些逻辑相关的组织在一起,并且控制内部类代码的可视性,对于初学者来说,学习内部类好像是多余的,但是我们学会了内部内的使用就掌握了java高级编程的一部分,就会让我们的代码看上去更加的优雅。





 

分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    Java 1.6 API 中文 New

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    JavaAPI1.6中文chm文档 part1

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java api最新7.0

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类和...

    java初学者必看

    1.7.2 Java虚拟机的生命周期 1.7.3 Java虚拟机的体系结构 1.8 垃圾收集器 1.9 本章习题 第2章 Java开发环境 2.1 J2SE的下载和安装 2.1.1 J2SE的下载 2.1.2 J2SE的安装 2.2 环境变量的配置与测试 2.2.1 设置...

    java jdk-api-1.6 中文 chmd

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    JavaAPI中文chm文档 part2

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    疯狂JAVA讲义

    学生提问:不是说JVM是运行Java程序的虚拟机吗?那JRE和JVM的关系是怎样的呢? 8 学生提问:为什么不安装公共JRE系统呢? 9 1.4.2 设置PATH环境变量 10 学生提问:为什么选择设置用户变量,用户变量和系统变量有...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.5.4 Java虚拟机(Java Virtual Machine) 17 1.5.5 HelloWorld的整个流程 17 1.6 小结:我们学会了编译和运行一个Java程序! 18 1.7 习题 19 第2章 搭建自己的集成开发环境 20 教学视频:31分钟 2.1 安装...

    JAVA--达内培训笔记

    运行命令 java xxxx 类的名字 --- 启动虚拟机 6、环境变量 JAVA_HOME = /opt/jdk1.5.06 JDK 安装路径 --- JDK = JRE {JVM(硬件)+编译器(软件)} +编译器工具+类库 PATH = $Path:$Java_Home/bin:. ClassPath ...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    1.5.4 Java虚拟机(Java Virtual Machine) 17 1.5.5 HelloWorld的整个流程 17 1.6 小结:我们学会了编译和运行一个Java程序! 18 1.7 习题 19 第2章 搭建自己的集成开发环境 20 教学视频:31分钟 2.1 安装...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    java基础案例与开发详解案例源码全

    2.5 Java虚拟机简介28 2.6 Java技术两种核心运行机制29 2.7 上机练习30 第3章 3.1 变量32 3.1.1 什么是变量32 3.1.2 为什么需要变量32 3.1.3 变量的声明和赋值33 3.1.4 变量应用实例33 3.2 数据的分类34 3.2.1 Java...

    Java语言基础下载

    Java虚拟机 4 类加载器 6 Windows环境变量 8 内容总结 13 独立实践 14 第二章: 面向对象概述 15 学习目标 15 面向对象(Object Oriented) 16 面向对象的主要特性 18 抽象(Abstraction) 18 封装(Encapsulation): 19 ...

    [Java参考文档]

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java 面试题 总结

    Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 原始类型封装类 booleanBoolean charCharacter byte...

Global site tag (gtag.js) - Google Analytics