解析Java对象引用与JVM自动内存管理

技术解析Java对象引用与JVM自动内存管理 解析Java对象引用与JVM自动内存管理对象引用应用程序设计接口是JDKTM1.2中新定义的。该应用程序设计接口允许应用程序以对象引用的方式与JVM的内存管

解析Java对象引用和JVM自动内存管理。

JDKTM1.2中新定义了引用应用程序编程接口。该API允许应用程序以对象引用的形式与JVM的内存管理器进行交互。当应用程序需要在创建新的Java对象之前管理大量内存对象或删除原始对象时,Java对象引用应用程序编程接口有相当多的用途,例如:

基于Web的应用程序通常需要显示大量图片。当用户离开某个网页时,他们往往不确定是否能顺利返回。在这个程序中,Java对象引用API的应用程序可以创建一个环境,在这个环境中,当堆内存以最小的速度运行时,内存管理器会创建对象。当用户返回时,应用程序将重新加载创建的图片。

对象引用队列的应用程序可以创建一个环境,在该环境中,当通过对象引用获取对象时,应用程序会得到通知。然后,应用程序可以清除相关对象,并在内存管理器中将它们合法化。

内存管理器的工作机制。

下面将首先介绍未嵌入引用对象时内存管理器的工作机制,然后讨论添加引用对象后Java堆的变化。

内存管理器的功能是识别程序中不再使用的对象并回收它们的内存。

一个Java应用程序由一系列线程组成,每个线程执行一系列方法,每个方法通过参数或局部变量引用一个对象。这些引用是引用集合的一部分,直接转到应用程序。此外,引用集合还包括类库中定义的静态引用变量以及通过Java本地接口(JNI)API获得的引用。引用集合中的所有被引用对象都可以由当前应用程序获取,而无需回收。类似地,这些对象可能包含对其他对象的引用,或者它们可能被应用程序获取,等等。Java堆中的其他对象被认为是不可访问的,所有这些不可访问的对象在内存管理中也是合法的。如果一个不可用的对象使用finalize()方法,任务将被移交给该对象调用的终结器。在内存回收过程中,没有关闭器的不可访问对象和已经调用关闭器的对象被简单地回收。

内存回收的算法是不断变化的,共同的方面是从引用集中识别可获取的对象,回收其他对象占用的内存空间。

添加引用对象后的引用与常规引用的区别在于引用对象中的引用是由内存管理器专门处理的。引用封装了其他对象的引用,我们称之为指示性对象。创建参考对象时,定义参考对象的指示器对象。

Java对象引用

图1显示了对象引用应用程序设计界面中定义的类层次结构。其中SoftReference类、WeakReference类和PhantomReference类分别定义了三种引用对象和三种相应的获取对象的能力。因此,按照从强到弱的顺序,对象的可达性可以分为以下五种类型:强可达、软可达、弱可达、幻可达和不可达。

图1对象应用程序的类层次结构。

根据应用需求,对象可以是强引用、软引用、弱引用和幻影引用的任意组合。为了确定对象的可用性,JVM内存管理器从引用集合中搜索堆中对象的所有路径。当一个对象的任何路径都不包含参考对象时,就说这个对象具有很强的获取能力。当路径包含一个或多个参考对象时,根据内存管理器查询的参考对象类型,分为二次获取、弱获取和虚拟获取。

此外,引用对象队列(java.lang.ref.ReferenceQueue)也是在对象引用API中定义的,这是内存管理器管理引用对象的简单数据结构。值得注意的是,在定义引用对象时,必须在引用对象队列中生成幻影引用对象,而软引用和弱引用对象没有此限制,例如:

reference queue queue=new reference queue();

PhantomReference pr=new PhantomReference(对象,队列);

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/61502.html

(0)

相关推荐

  • Socket基础知识有哪些

    技术Socket基础知识有哪些本篇文章给大家分享的是有关Socket基础知识有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。如何一步步掌握Socket相

    攻略 2021年11月25日
  • school的音标,音标中长短音单词怎么区别

    技术school的音标,音标中长短音单词怎么区别因为相近,所以难辨school的音标。不是长短音的问题,发音长短不是区别的主要方面。长短音只是不负责任的简化表达。iː和ɪ,还有uː和ʊ的发音的区别,根本不是发音长短的问题

    生活 2021年10月19日
  • 207所,中国兵器工业集团207所怎么样

    技术207所,中国兵器工业集团207所怎么样答207所:中国兵器工业集团公司自2004年以来连年获A级中央企业,位居央企前列。发展现状
    兵器工业是国家安全的战略基础。
    人民兵工是我党领导和创建的第一个工业部门,历经无数战

    生活 2021年10月25日
  • 如何修改cocosbuilder文件数目的限制

    技术如何修改cocosbuilder文件数目的限制这篇文章将为大家详细讲解有关如何修改cocosbuilder文件数目的限制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。下载 coco

    攻略 2021年11月19日
  • 太阳像什么的比喻句,太阳像个大火球是完整的比喻句吗

    技术太阳像什么的比喻句,太阳像个大火球是完整的比喻句吗“太阳像个大火球”是2113比喻句!5261 有一个“像”字可不代表就是比喻句4102. 句子如果说“不像”,就是没1653有把什么比喻什么,也就是没有本体、喻体,甚

    生活 2021年10月22日
  • ADO.NET事务处理方法有哪些

    技术ADO.NET事务处理方法有哪些这篇文章主要介绍“ADO.NET事务处理方法有哪些”,在日常操作中,相信很多人在ADO.NET事务处理方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

    攻略 2021年12月3日