999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java內存模型描述及變量運用分析

2019-09-10 07:22:44王茂鋼
現代信息科技 2019年4期

摘 要:在使用Java編程的過程中,內存是保障編程程序順利進行的重要資源,而加強對內存的合理、有效運用,有助于編程效率的極大提升,并且在大量的研究和探索中,挖掘出其更加全面的功能。本文主要對Java內存模型的概念、Java的內存分配及相關功能進行了介紹,最后通過對Java內存的詳細分析,明確了Java內存分配機制的具體應用,以供相關研究工作者參考。

關鍵詞:Java內存模型;Java堆;內存分配;Java虛擬機棧

中圖分類號:TP311.11 文獻標識碼:A 文章編號:2096-4706(2019)04-0098-02

Java Memory Model Description and Variable Utilization Analysis

WANG Maogang

(Guangdong Industry and Trade College,Foshan 528237,China)

Abstract:In the process of using Java programming,memory is an important resource to ensure the smooth progress of programming program,and strengthening the rational and effective use of memory will help greatly improve the efficiency of programming,and in a large number of research and exploration,excavate its more comprehensive functions. In this paper,the concept of Java memory model,Java memory allocation and related functions are introduced. Finally,through the detailed analysis of Java memory,the specific application of Java memory allocation mechanism is clarified for the reference of relevant researchers.

Keywords:Java memory model;Java heap;memory allocation;Java virtual machine stack

0 引 言

運用具有特定體系結構的計算機來開發(fā)和設計各種編程程序時,需加強對計算機內存的管理和合理運用。在保存和運行各種程序時,需要依靠內存的作用來實現,此外,在保存執(zhí)行結果時,也需發(fā)揮內存的作用。Java語言是面向對象、服務于對象的,在它的內部結構中,具備完善的自動管理能力和設計內存模型的作用。開發(fā)者在編制相應的代碼,創(chuàng)建一定的應用程序時,既需要確保算法的科學和合理,又要對Java的內存模型及相關的管理策略進行深入理解,從而在編程的過程中,充分發(fā)揮它們的作用來促進編程工作的順利進行。本文主要分析了Java內存模型的含義、Java內部組成情況及編程過程中的應用機制等,希望可為Java編程教學工作提供有利參考。

1 Java內存模型概述

1.1 Java內存模型的概念

相比于以往Java對計算機語言的生成,Java平臺的應用有助于集成多處理器及線程技術,該語言主要被具有獨立性的多種異構平臺所使用。由此可知,Java語言主要運用在不同的平臺之間,具有跨平臺的性質,它的這種性質主要表現為當對*.java源程序進行編譯,使其變?yōu)?.class的字節(jié)碼后,該字節(jié)碼文件具有跨平臺性質。然而,在對該字節(jié)碼文件進行執(zhí)行時,還需利用Java虛擬機即JVM(Java Virtual Machine)來加載、解釋、校驗、運行等字節(jié)碼文件,從而來更好的執(zhí)行該文件,Java虛擬機與各項操作系統都有很大關聯。通過Java程序在執(zhí)行時的具體流程可知,在內存中,加載完字節(jié)碼文件后,需依靠JVM對內存的管理作用,來有效的執(zhí)行該程序。Java內存模型對于程序中的數組元素、實例域等變量之間的關系進行了描述,并且在進行編程時,利用計算機系統,完成在內存中儲存相關變量、然后再次取出變量等工作,對象始終被存儲在內存里面,然而,利用處理器、運行庫或者編譯器,可以隨意將位于內存中的變量進行存儲或者取出。

1.2 Java主要內部結構及作用

在對Java虛擬機(JVM)的內部結構進行劃分時,可將其分為幾個不同的區(qū)域,而且每個區(qū)域都具有特定的功能,它們對各自的數據類型進行存儲,大多數內存區(qū)會在JVM和線程的創(chuàng)建和消亡狀態(tài)下發(fā)生相應改變。根據內存區(qū)域的不同,它們的生命周期和存儲類型也有所差別,但是它們卻可以對程序在運用時所具有的數據進行存儲。在處于運行狀態(tài)時,JVM可將數據區(qū)域進行劃分,而且有一些內存區(qū)域和子系統被包含在JVM的內部結構中,JVM的子系統為類加載器,執(zhí)行引擎位于內存區(qū)域中。

1.2.1 程序計數器

程序計數器作為一個內存區(qū)域,具有較小的空間和較快的速度,該區(qū)域處于CPU的內部位置,具有有限的數量。它作為指示指令地址的功能區(qū)域,可以用來指示字節(jié)碼的行號。在對該區(qū)域進行控制時,無法由Java的內部應用程序來直接完成,需要字節(jié)碼解釋器在對程序計數器的數值進行改變的情況下,對將執(zhí)行的字節(jié)碼指令進行選擇,因此,程序計數器與線程具有相同的生命周期。

1.2.2 Java虛擬機棧

Java虛擬機棧一般存在于通用RAM中,程序指令在進行操作時,需要由出入棧配合來完成。有較多的線程被保存在Java棧中,而且其方法又在棧幀中被存儲。在本地方法棧中,保存著有關本地方法的調用狀態(tài),并且與Java棧處于相互分離的狀態(tài)。對于線程中的方法,需要在多個組合棧幀的作用下來進行調用,伴隨著方法的調用和完成,JVM對于新棧幀的處理狀態(tài)也不同,可以完成對棧幀的入棧和出棧。因此,在分配Java棧的存儲空間時,可以使內存空間在移動棧指針的作用下,來進行動態(tài)調整,這對于程序的運行具有較大的限制作用,促使其靈活性大大降低。但這種方法只對Java的基本數據類型適用,可用來存儲Java對象的引用信息。

1.2.3 Java堆

Java堆一般也在RAM中儲存,它作為一種內存池,具有通用性質,可將Java引用類型的實例如數組、類類型、接口等進行存放。在創(chuàng)建對象時,主要由數組實例、類實例及派生實例來完成。Java堆的創(chuàng)建一般在啟動虛擬機時進行,并且對于所有的線程具有共享作用。在運行時,Java堆可以對內存進行動態(tài)分配,對于那些沒有引用價值的對象實例,可由Java的垃圾收集器(Garbage Collection)來進行自動回收。編譯器可以在不知曉堆的生命周期、存儲區(qū)域、對象存活時間等問題的情況下運行。因此,相對于棧的分配方式,堆具有相對靈活的分配策略,然而卻具有較慢的存取速度。在棧中存儲的數據具有共享性,但是由于棧具有獨特的結構類型,因此,棧的分配不夠靈活,必須確定棧中的生存期及數據數值。因此,與棧相比,在對存儲空間進行分配時,堆需要花費較多的時間。

1.2.4 方法區(qū)

JVM中的所有線程都可以對方法區(qū)進行共享,它的存儲對象為Java類的元數據類型。例如:類的常量池、方法信息、類型信息及域信息等,其中類型信息又包含類型的修飾符、名稱、接口類表及父類的全名稱等。

2 Java程序內存分配

在JVM自動管理機制的作用下,開發(fā)者的編程效率可以被極大地提升,然而,在過度依賴自動管理機制的情況下,就會使開發(fā)者喪失對問題的定位和解決能力。因此,需要充分掌握JVM的自動管理機制、內存模型及內存分配方法。

Java在對內存進行分配時,可以選擇在棧上、堆上或者靜態(tài)存儲區(qū)域來完成。在使用棧上分配時,可以對Java的引用類型變量及基本數據類型變量進行分配,堆上則可將對象實例分配給引用類型。在程序中創(chuàng)建對象實例時,可由new來完成,然后在堆內存中為該對象分配一定的存儲空間,從而用以存儲對象中的多個不同的成員變量。當這些對象實例不需再被運用的情況下,就可在垃圾收集器的作用下,對其進行回收處理。當JVM在運行程序時,字節(jié)碼就會在類加載器的作用下被加載。方法區(qū)主要用于存儲類文件中的一些信息和字節(jié)碼等,Java堆和Java虛擬機棧則對一些重要信息進行存儲。

Java虛擬機棧作為線程的特有內存區(qū)域,只由一些特定的線程進行訪問。Java虛擬機棧與線程具有一致的生命周期,可以對棧幀進行存儲。Java堆作為線程的一種共享區(qū)域,它的存儲對象為對象實例,此外,它也可以作為垃圾收集器在對垃圾進行回收處理的重要區(qū)域。

3 Java編程時的內存分析及具體應用

3.1 創(chuàng)建Java對象

在Java中創(chuàng)建對象時,可以通過以下幾種方式來完成:(1)其一是一種最常見的對象創(chuàng)建方法,即使用new語句來創(chuàng)建對象;(2)通過反射方式,調用實例的方法來完成;(3)對對象的clone()進行調用的方式;(4)采用反序列化手段調用對象的方式來完成。

3.2 對象內存結構及初始化程序

在Java內存模型中,需在完成相應的初始化操作之后,再對類的成員變量加以使用,在依靠自動化設計對每一個基本數據類型進行初始化操作時,它們都可以擁有一個相應的初始數值,例如:引用類型中的各個元素,它的初始數值為NULL。在對成員變量采取初始化操作時,可以依據第二種初始化方式即是指在類的構造方法里對成員變量進行初始化,在對成員變量進行初值確定時,可在定義類成員變量的區(qū)域來完成。第三種對變量進行初始化的方式,是指在初始化塊中對已經聲明的成員變量進行初始化,它是指是在對某一種方法進行調用的情況下,來初始化其中各個成員的變量。在類的內部,初始化的順序與對變量的定義順序密切相關。即使在方法定義的過程中,存在有一些變量定義,在對這些變量定義進行初始化時,也可以在調用任何方法之前來進行。

4 結 論

為了更好的掌握Java的編程功能,了解Java的具體應用方法,需加強對Java內存模型結構的理解,并且熟悉Java功能的分配情況。在編程程序運行的過程中,JVM的核心區(qū)域即是數據區(qū),此外,編程過程也同樣涉及到了方法區(qū)、Java堆及JVM棧,而且它們分別具有相應的存儲內容,即方法區(qū)存儲的內容為對象類型數據,Java堆對對象實例進行存儲,而JVM棧則主要存儲引用變量及基本數據類型的變量等。在創(chuàng)建對象、處理對象的基礎上,進一步展示了內存模型的相關功能,促使人們了解了Java內存模型中各個功能的分配情況,并且對成員變量的初始化問題有了一個更加深入的了解。相信在具體的實踐和創(chuàng)新條件下,Java內存模型也會有所改進和更新,并通過對各項功能的合理分配,來促進編程的順利進行。

參考文獻:

[1] 張紅,王曉明,曹潔,等.Hadoop云平臺MapReduce模型優(yōu)化研究 [J].計算機工程與應用,2016,52(22):22-25.

[2] Zhang Y,Feng X. An operational happens-before memory model [J]. Frontiers of Computer Science,2016,10(1):54-81.

[3] 楊蘭.計算機軟件開發(fā)的JAVA編程語言及其實際應用 [J].電子設計工程,2017,25(21):49-52+56.

[4] 陳夢凱,李小雅.基于JAVA編程的危險化學品事故預測管理模型的建立 [J].赤峰學院學報(自然科學版),2016,32(19):30-32.

作者簡介:王茂鋼(1963.3-),男,漢族,四川渠縣人,講師,畢業(yè)于華南師范大學,本科,研究方向:計算機教學及應用。

主站蜘蛛池模板: 91成人在线免费观看| 国产精品成人一区二区| www.狠狠| 亚洲综合色婷婷| 午夜毛片免费观看视频 | 国产综合欧美| 日韩午夜片| 久久五月视频| 凹凸国产熟女精品视频| 91在线丝袜| 成年人久久黄色网站| 国产流白浆视频| 国产天天色| 香蕉eeww99国产精选播放| 亚洲动漫h| 动漫精品啪啪一区二区三区| 精品无码日韩国产不卡av | 免费又爽又刺激高潮网址| 国产成人凹凸视频在线| 奇米精品一区二区三区在线观看| 午夜不卡福利| 最新国语自产精品视频在| 2020国产在线视精品在| 国产精品视频导航| 免费国产福利| 99999久久久久久亚洲| 精品国产Ⅴ无码大片在线观看81 | 欧美午夜视频在线| 亚洲综合精品香蕉久久网| 呦女精品网站| 精品国产香蕉在线播出| 中文字幕亚洲无线码一区女同| 国产国模一区二区三区四区| 精品国产网| 五月天在线网站| 国产午夜人做人免费视频| 亚洲高清国产拍精品26u| 黄色污网站在线观看| 国产黑人在线| 99re视频在线| 在线综合亚洲欧美网站| 亚洲国产综合精品中文第一| 91 九色视频丝袜| 97狠狠操| 国产精品页| 第一页亚洲| 色综合成人| 女人18毛片一级毛片在线| 久久久精品国产亚洲AV日韩| 九九热精品免费视频| 日韩高清在线观看不卡一区二区| 国产成人精品2021欧美日韩| 亚洲最大看欧美片网站地址| 91精品国产情侣高潮露脸| 亚洲九九视频| 欧美丝袜高跟鞋一区二区| 国产在线观看一区精品| 有专无码视频| 中文字幕免费视频| 在线看国产精品| 日韩欧美国产区| 国产SUV精品一区二区| 超碰aⅴ人人做人人爽欧美 | 国产精品无码作爱| 国产精品3p视频| 欧美福利在线播放| 国产欧美日韩91| 91精品啪在线观看国产91九色| 欧美日韩国产在线观看一区二区三区| 欧美乱妇高清无乱码免费| 日本人妻一区二区三区不卡影院| 99青青青精品视频在线| 欲色天天综合网| 区国产精品搜索视频| 欧美亚洲综合免费精品高清在线观看 | 久久久久久高潮白浆| 国产成人禁片在线观看| 玖玖精品在线| 国产新AV天堂| 欧美.成人.综合在线| 欧美影院久久| 女人18毛片一级毛片在线|