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

java 虚拟机引用的分类

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

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

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

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

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

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


内部类

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





 

分享到:
评论

相关推荐

    Java虚拟机规范中文版

    2. 数据类型和数据结构:Java虚拟机支持的数据类型分为基本类型和引用类型,其中基本类型包括整型、浮点型、布尔型和字符型等,引用类型则包括类类型、接口类型和数组类型。JVM规定了这些类型在虚拟机中的表示方法和...

    Java虚拟机和Java程序的生命周期?

    ### Java虚拟机与Java程序的生命周期 #### 一、Java虚拟机(JVM)概述 Java虚拟机(JVM)是一种可以执行Java字节码的虚拟机。它为Java应用程序提供了一个独立于硬件平台的运行环境,使得Java程序可以在任何安装了JVM...

    java虚拟机.docx

    ### Java虚拟机(JVM)详解 #### 一、Java虚拟机概述 Java虚拟机(JVM)是Java技术的核心组成部分之一,它确保了Java程序能够跨平台运行,即实现了“一次编写,到处运行”的理念。这一特性是通过Java字节码在不同操作...

    深入理解java虚拟机

    《深入理解Java虚拟机》这本书主要探讨了Java内存管理和垃圾收集机制。在Java虚拟机(JVM)中,内存管理是至关重要的,因为它直接影响到程序的性能和稳定性。以下是书中涉及的一些关键知识点: 1. **分代收集理论**...

    Java卡虚拟机的安全攻击技术及防御技术研究.pdf

    由于智能卡资源有限,这些安全点的实现比标准的Java虚拟机更为复杂,且更容易受到安全威胁的影响。 研究者对Java卡虚拟机运行过程中的脆弱性进行了研究,识别了其潜在的安全缺陷。这些脆弱性可能由设计不当、实现...

    深入JAVA虚拟机.rar

    《深入JAVA虚拟机》是SUN公司核心技术丛书中的一部重要作品,主要涵盖了JAVA虚拟机(JVM)的深入解析,对于理解JAVA程序的运行机制、优化代码性能以及解决实际开发中的问题具有极高的指导价值。JVM是JAVA平台的核心...

    深入Java虚拟机JVM类加载学习笔记

    ### 深入Java虚拟机JVM类加载学习笔记 #### 一、Classloader机制解析 在Java虚拟机(JVM)中,类加载器(ClassLoader)是负责将类的`.class`文件加载到内存中的重要组件。理解类加载器的工作原理对于深入掌握JVM以及...

    Java虚拟机(JVM)面试宝典1.pdf

    ### Java虚拟机(JVM)面试宝典核心知识点详解 #### 一、Java内存区域 **1.1 JVM的主要组成部分及其作用** JVM的核心组件包括两个子系统和两个组件: - **Classloader(类装载器)**:负责根据给定的全限定名(如 ...

    java虚拟机总结

    ### Java虚拟机总结 #### 一、运行时数据区域 Java虚拟机管理的内存主要包括以下几部分: 1. **程序计数器** - **概述**:程序计数器是一块较小的内存区域,用于存储当前线程所执行的字节码的行号指示器。 - **...

    The Java Virtual Machine Specification Java SE 8 Edition.pdf

    指令集部分为Java虚拟机中的指令分类,并简述了它们的用途,例如加载和存储指令、算术指令、类型转换指令、对象创建与操纵指令、操作数栈管理指令、控制转移指令、方法调用与返回指令以及异常处理指令等。...

    java-分类目录-2017版本

    在Java中,类路径(Classpath)和模块路径(Modulepath)是两个重要的概念,它们决定了Java虚拟机(JVM)如何找到并加载所需的类和模块。类路径用于传统的Java应用,而模块路径则是Java 9及更高版本引入的,用于支持...

    Java复习笔记.docx

    1. Java 虚拟机(JVM):Java 虚拟机是 Java 程序的运行环境,负责将 Java 字节码转换为机器码并执行。 2. 字节码:Java 编译器将 Java 源代码编译成字节码,字节码可以在任何平台上运行。 3. 类加载器:类加载器...

    java面试常见120题

    - **概念**:Java虚拟机(JVM)是一种能够执行Java字节码的虚拟机进程。Java程序编写完成后,需要通过编译器转换成Java字节码(.class文件),这些字节码由JVM解释执行。 - **平台无关性**:Java的设计目标之一是...

    The Java® Language Specification Java SE 12 Edition

    Java SE 12版本的规范中,还包含了对Java虚拟机的字节码指令集的引用,这些指令用于Java程序的运行时执行。虽然字节码指令集不是Java语言规范的主要部分,但它是了解Java语言如何与Java虚拟机交互的重要参考。 Java...

    JAVA_API1.6文档(中文)

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

    毕向东Java笔记

    - **可移植性**:“一次编写,到处运行”(Write Once Run Anywhere, WORA),使得Java程序可以在任何安装了Java虚拟机(JVM)的平台上运行。 - **高性能**:通过JIT(Just-In-Time)编译器和先进的垃圾回收机制...

    The Java Language Specification

    《Java虚拟机规范》(第二版)详细介绍了Java虚拟机的工作原理和技术细节,包括但不限于: - **执行引擎**:解释器与即时编译器的运作机制。 - **类加载机制**:类加载过程、双亲委派模型等。 - **字节码指令集**:JVM...

    Java语言程序设计第二版习题解答

    - **Java字节码**:是Java源代码编译后的中间代码,是一种与平台无关的格式,可以在任何安装了Java虚拟机的平台上运行。 #### Java程序的运行过程 Java程序的执行流程如下: 1. **编写源代码**:使用Java语法编写...

Global site tag (gtag.js) - Google Analytics