亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Java內(nèi)存模型描述及變量運用分析

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

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

        關鍵詞:Java內(nèi)存模型;Java堆;內(nèi)存分配;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,F(xiàn)oshan 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ā)和設計各種編程程序時,需加強對計算機內(nèi)存的管理和合理運用。在保存和運行各種程序時,需要依靠內(nèi)存的作用來實現(xiàn),此外,在保存執(zhí)行結果時,也需發(fā)揮內(nèi)存的作用。Java語言是面向?qū)ο蟆⒎沼趯ο蟮?,在它的?nèi)部結構中,具備完善的自動管理能力和設計內(nèi)存模型的作用。開發(fā)者在編制相應的代碼,創(chuàng)建一定的應用程序時,既需要確保算法的科學和合理,又要對Java的內(nèi)存模型及相關的管理策略進行深入理解,從而在編程的過程中,充分發(fā)揮它們的作用來促進編程工作的順利進行。本文主要分析了Java內(nèi)存模型的含義、Java內(nèi)部組成情況及編程過程中的應用機制等,希望可為Java編程教學工作提供有利參考。

        1 Java內(nèi)存模型概述

        1.1 Java內(nèi)存模型的概念

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

        1.2 Java主要內(nèi)部結構及作用

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

        1.2.1 程序計數(shù)器

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

        1.2.2 Java虛擬機棧

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

        1.2.3 Java堆

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

        1.2.4 方法區(qū)

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

        2 Java程序內(nèi)存分配

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

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

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

        3 Java編程時的內(nèi)存分析及具體應用

        3.1 創(chuàng)建Java對象

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

        3.2 對象內(nèi)存結構及初始化程序

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

        4 結 論

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

        參考文獻:

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

        [2] Zhang Y,F(xiàn)eng 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è)于華南師范大學,本科,研究方向:計算機教學及應用。

        亚洲精品二区中文字幕| 国产乱人偷精品人妻a片| www插插插无码视频网站| 亚洲精品中文字幕无乱码麻豆| 国产小车还是日产的好| 蜜桃免费一区二区三区| 日韩av无码精品一二三区| 国产美女遭强高潮网站| 日韩精品欧美激情国产一区| 日本免费大片一区二区三区 | av是男人的天堂免费| 影音先锋久久久久av综合网成人| 久久精品免费一区二区三区 | 91精品啪在线观九色| 国产精品www夜色视频| 久久亚洲欧洲无码中文| 天堂视频一区二区免费在线观看 | 国产成人亚洲一区二区| 亚洲中文字幕无码一久久区| 精品国产一区二区三区19| 亚洲综合免费在线视频| 日本道免费一区二区三区日韩精品 | 公厕偷拍一区二区三区四区五区| 亚洲精品乱码久久久久久金桔影视| 日韩AV有码无码一区二区三区| 亚洲一区二区三区高清视频| 日本饥渴人妻欲求不满| 亚洲精品无码乱码成人| 国产品精品久久久久中文| 人妻中文字幕一区二区视频| 中文字幕日本人妻久久久免费| 四虎影永久在线观看精品| 亚洲精品中文字幕乱码人妻| 人妻诱惑中文字幕在线视频| 丰满人妻av无码一区二区三区| www.91久久| 亚洲自拍偷拍一区二区三区| 爱性久久久久久久久| 国产欧美精品一区二区三区,| 亚洲av综合色区久久精品| 国产av国片精品有毛|