`
tainqinhot
  • 浏览: 19494 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java对象及元素的归宿在哪里

    博客分类:
  • java
阅读更多

 在JAVA平台上开发应用程序的时候,有一个很大的特点就是其是在应用程序运行的时候才建立对象。换句话说,在程序运行的时候,才会最终确定对象的归属,即对象应该存储在什么地方。由于存储在不同的区域,其在性能上会有所不同。为此作为Java程序开发人员需要了解各个存储区域的特点以及对性能的影响。然后再根据需要来调整应用程序的区域分配。总的来说,在操作系统中有五个地方可以用来保存应用程序运行中的数据。这类区域的特点以及对性能的影响分析如下。

  保存区域一:寄存器。

  虽然同在内存中,但是不同的区域由于用途不同,其性能也有所不同。如就拿Java应用程序来说,寄存器由于其处于处理器的内部,为此这个区域存取数据最快。跟内存中的其他存储区域有着天壤之别。那么我们把所有对象都放到这个区域内,不就可以提高Java应用程序的性能了吗?理论上是如此,但是在现实中是行不通的。因为这个寄存器的数量是非常有限的。在内存中的寄存器区域是由编译器根据需要来分配的。我们程序开发人员不能够通过代码来控制这个寄存器的分配。所以说,这第一个存储区域寄存器,我们只能够看看,而不能够对其产生任何的影响。

  保存区域二:堆栈。

  对象的创建有两种方式,一是在应用程序开发的过程中就创建对象;二是在程序运行的过程中要用到对象的时候再来创建对象。前者比后者性能要高,而后者比前者要灵活。这主要是因为前者创建对象的时候,就是这个堆栈中创建的。虽然其创建的对象没有保存在寄存器中,但是通过这个对象的推栈指针可以直接从处理器哪里获得相关的支持。如堆栈指针往上移动的时候,则释放原有对象占用的内存;如堆栈指针向下移动时,则为对象分配新的内存。所以,如果把对象存放在这个堆栈中,虽然性能没有像存放在寄存器中那么理想,但是仍然比存储在其他地方要好的多。

  由于Java程序是在程序运行过程中才根据需要来创建对象。为此对象就不能够保存在这个堆栈中。不过Java应用程序也不能够白白的浪费这个宝贵的空间。为此虽然Java对象本身没有保存在这个堆栈中(不是不保存而是这里没有他的容身之地),但是还是应该把一些可以放的内容放到这个堆栈中,以提高应用程序的性能。如可以把一些对象引用存放在这个堆栈中。

  另外对于一些基本的数据类型对象,Java程序也往往把他们放置在堆栈中,以提高数据处理的性能。如一些整数型、字符型的数据对象,这些对象有些共同的特点,如对象比较小、是Java程序提供的标准对象等等。对于这些对象由于每个应用程序基本上都需要用到,而且我们程序开发人员只能够引用这些对象,而不能够对其进行更改。为此Java程序在处理的时候,往往一开始就创建了对象(即直接在堆栈中创建对象并保存),而不像其他对象一样,在需要的时候才创建。只所以在堆栈中创建这些对象,还有一个重要的原因。因为如果在堆栈中创建对象的话,Java编辑器必须知道存储在堆栈内所有数据的确切大小和生命周期。为了得到这些信息,必须产生相关的代码来获得这些信息,以便其操作堆栈指针。普通的对象大小、生命周期等等难以预先获得,为此在堆栈中创建普通的对象,对于Java应用程序来说并不是很合适。相反,这些Java编译器预定义的对象大小并不会随着机器硬件架构的变化和用户需求的变化而变化;而且这些对象往往从始之终都会存在的,所以也不存在生命周期的问题。所以把这些对象放置在堆栈中是合理的,也是可实现的。如此处理,不仅不会影响到对象的灵活性,而且还可以提供比较好的性能。

在JAVA平台上开发应用程序的时候,有一个很大的特点就是其是在应用程序运行的时候才建立对象。换句话说,在程序运行的时候,才会最终确定对象的归属,即对象应该存储在什么地方。由于存储在不同的区域,其在性能上会有所不同。为此作为Java程序开发人员需要了解各个存储区域的特点以及对性能的影响。然后再根据需要来调整应用程序的区域分配。总的来说,在操作系统中有五个地方可以用来保存应用程序运行中的数据。这类区域的特点以及对性能的影响分析如下。

  保存区域一:寄存器。

  虽然同在内存中,但是不同的区域由于用途不同,其性能也有所不同。如就拿Java应用程序来说,寄存器由于其处于处理器的内部,为此这个区域存取数据最快。跟内存中的其他存储区域有着天壤之别。那么我们把所有对象都放到这个区域内,不就可以提高Java应用程序的性能了吗?理论上是如此,但是在现实中是行不通的。因为这个寄存器的数量是非常有限的。在内存中的寄存器区域是由编译器根据需要来分配的。我们程序开发人员不能够通过代码来控制这个寄存器的分配。所以说,这第一个存储区域寄存器,我们只能够看看,而不能够对其产生任何的影响。

  保存区域二:堆栈。

  对象的创建有两种方式,一是在应用程序开发的过程中就创建对象;二是在程序运行的过程中要用到对象的时候再来创建对象。前者比后者性能要高,而后者比前者要灵活。这主要是因为前者创建对象的时候,就是这个堆栈中创建的。虽然其创建的对象没有保存在寄存器中,但是通过这个对象的推栈指针可以直接从处理器哪里获得相关的支持。如堆栈指针往上移动的时候,则释放原有对象占用的内存;如堆栈指针向下移动时,则为对象分配新的内存。所以,如果把对象存放在这个堆栈中,虽然性能没有像存放在寄存器中那么理想,但是仍然比存储在其他地方要好的多。

  由于Java程序是在程序运行过程中才根据需要来创建对象。为此对象就不能够保存在这个堆栈中。不过Java应用程序也不能够白白的浪费这个宝贵的空间。为此虽然Java对象本身没有保存在这个堆栈中(不是不保存而是这里没有他的容身之地),但是还是应该把一些可以放的内容放到这个堆栈中,以提高应用程序的性能。如可以把一些对象引用存放在这个堆栈中。

  另外对于一些基本的数据类型对象,Java程序也往往把他们放置在堆栈中,以提高数据处理的性能。如一些整数型、字符型的数据对象,这些对象有些共同的特点,如对象比较小、是Java程序提供的标准对象等等。对于这些对象由于每个应用程序基本上都需要用到,而且我们程序开发人员只能够引用这些对象,而不能够对其进行更改。为此Java程序在处理的时候,往往一开始就创建了对象(即直接在堆栈中创建对象并保存),而不像其他对象一样,在需要的时候才创建。只所以在堆栈中创建这些对象,还有一个重要的原因。因为如果在堆栈中创建对象的话,Java编辑器必须知道存储在堆栈内所有数据的确切大小和生命周期。为了得到这些信息,必须产生相关的代码来获得这些信息,以便其操作堆栈指针。普通的对象大小、生命周期等等难以预先获得,为此在堆栈中创建普通的对象,对于Java应用程序来说并不是很合适。相反,这些Java编译器预定义的对象大小并不会随着机器硬件架构的变化和用户需求的变化而变化;而且这些对象往往从始之终都会存在的,所以也不存在生命周期的问题。所以把这些对象放置在堆栈中是合理的,也是可实现的。如此处理,不仅不会影响到对象的灵活性,而且还可以提供比较好的性能。

分享到:
评论

相关推荐

    【《亲情,一生的归宿》阅读答案】一生修行的重点和归宿.docx

    文章通过主人公和哥哥的故事,告诉我们,亲情是一个人一生的归宿,无论在哪里,无论是何时,家人总是我们最忠实的支持和祝福。 在第 9 题中,我们可以看到,主人公处于人生最深的低谷,是因为他经历了离婚、经济...

    归宿终安在

    1. 文学创作:文章以"归宿终安在"为标题,暗示了对家乡、故土以及自然环境的深深眷恋,这是文学作品中常见的主题,通过个人情感与自然景观的交融,展现出对故乡的深厚感情。 2. 乡土文化:文中提及的“欢迎蛋”是一...

    纯真IP数据库_java版

    标签中包含了“JAVA”、“归宿地”和“java”,进一步明确了这个工具是用Java语言实现的,并且主要功能是获取IP地址的归属地信息。标签中的“纯真 IP”也与标题相呼应,再次强调了数据库的来源。 在压缩包子文件的...

    与Java相关的四十个响亮的名字

    也正是因为如此,Java也找到了自己的归宿。现在的J2EE已经成为中大型企业级应用的标准,成为承接数据库和Web之间的一个重要桥梁。 Java的发展历程是一场伟大的革命,它改变了软件产业的面貌,对互联网的发展产生了...

    Java IO

    Java的真正归宿是企业级应用。NIO通过提高I/O操作的效率和性能,使得Java在企业应用中处理大量数据和高并发场景时变得更为强大和有竞争力。 ### 总结 NIO是Java平台上的一个重要的I/O库,它在性能和资源使用上与...

    Java学生宿舍管理系统

    《Java学生宿舍管理系统详解》 Java学生宿舍管理系统是一款利用Java编程语言和SQL数据库技术构建的应用软件,主要用于高校或教育机构对学生宿舍的全方位管理。系统涵盖了来访登记、夜归记录、新生入住等一系列日常...

    基于java的宠物领养系统设计与实现(源代码+数据库+部署文档+辅导视频).zip

    本项目基于Java技术,旨在提供一个全面的宠物领养平台,帮助用户方便快捷地找到合适的宠物,并为宠物提供良好的归宿。下面我们将详细探讨该系统的各个组成部分及其相关知识点。 首先,我们要了解Java编程语言在系统...

    我的归宿在大海中学想象作文.docx

    我的归宿在大海中学想象作文.docx

    初中语文文摘文苑我去找我的归宿

    初中语文文摘文苑我去找我的归宿

    税收负担与归宿PPT学习教案.pptx

    归宿则是指税负最终落在哪里,可能是经济参与者,也可能是商品或服务的购买者。如果税负未被转嫁,即为法定归宿或直接归宿。研究税收转嫁和归宿有助于理解税收对社会经济和收入分配的实际影响。 【税收转嫁的方式】...

    人大税收学税收转嫁与归宿PPT学习教案.pptx

    税收转嫁与归宿是经济学和财政学中的重要概念,尤其在理解和分析税收政策对经济活动的影响时不可或缺。此篇PPT学习教案详细阐述了这两个概念的定义、分类以及多种形式,同时通过局部均衡分析探讨了不同市场结构下的...

    税收转嫁与归宿学习教案.pptx

    《税收转嫁与归宿》的学习教案主要涵盖了税负转嫁和税负归宿的概念、形式及其在经济活动中的分析。税负转嫁是指纳税人在法律规定的范围内,将自己应承担的税款通过一定的途径传递给他人。这种现象通常发生在流转税中...

    宿舍管理课程设计java

    在进行“宿舍管理课程设计”时,我们主要的目标是构建一个基于Java编程语言的系统,用于高效地管理学生宿舍的信息和日常事务。这个系统将涵盖入住、退房、资源分配、违规记录等多个方面,帮助学校后勤部门提升管理...

    c#做的一个Ip归宿地查询

    标题中的"C#做的一个IP归宿地查询"指的是使用C#编程语言开发的软件应用程序,其主要功能是查询IP地址的归属地信息。IP归宿地查询是网络信息技术中的一个重要部分,它允许用户通过输入一个IP地址来获取该IP对应的位置...

    中考语文满分作文成长见证归宿的可贵

    他找到了幸福的源泉,那就是无论走到哪里,心中的归宿始终不变。这体现了作者对生活和人际关系的深刻洞察,以及对成长过程中保持初心的重要性。 总结来说,这篇作文传递了以下几个知识点: 1. 成长的困惑与迷茫:在...

    基于JavaSwing校园宿舍管理系统(源码+数据库SQL+毕业设计文档)

    在本系统中,JavaSwing被应用于构建校园宿舍管理系统的前端界面,为用户提供直观易用的操作界面。 该校园宿舍管理系统的核心功能包括学生信息管理、宿舍分配、资源预约、违规记录以及报表统计等。系统采用数据库...

    手机伴侣 shoujibanlv 区号,归宿地,等详细准确查询,最新

    《手机伴侣:全面解析区号与归宿地查询功能》 手机伴侣,一款专注于提供区号、归宿地等信息详细准确查询的软件,凭借其最新的数据更新和强大的查询功能,成为了众多用户日常生活中不可或缺的工具。这款名为...

    叶子的归宿作文.doc

    2. **文件命名**:标题中的“叶子的归宿”是文件名的一部分,文件命名规范在组织和检索信息时非常重要,因为它有助于快速识别和定位文件内容。 3. **信息存储**:文件被保存在某种存储介质上,可能是本地硬盘、网络...

    苏东坡关竹问题 java

    苏东坡在迁谪黄州期间对竹子情有独钟,他在屋前挂了很多用来当作雨檐的竹子。 某日,天空下起了雨,苏轼静坐在窗前看着窗外,手抚瑶琴,忆古思今。他突然感悟到,人 生之于宇宙,与其说像沧海一栗,不如说更像这眼前...

    教育改革的归宿.doc

    教育改革的归宿在于改变传统单一的学习方式,倡导自主、合作和探究的新型学习模式。这一模式不仅是新课程改革的核心理念,也是推动教育进步的重要力量。在这个过程中,自主学习被视为学习的基础,它强调个体的主观...

Global site tag (gtag.js) - Google Analytics