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

        ?

        Java語言與C語言中垃圾回收的不同方式研究

        2021-03-08 09:47:22胡宇濤
        科學與財富 2021年6期
        關鍵詞:Java語言

        摘 要:計算機中的各項語言都具備特有的優(yōu)缺點,其中Java語言屬于對象語言的范疇,而C語言屬于過程式語言。本文結合Java語言和C語言垃圾回收動態(tài)存儲的基本特征,對它們不同的垃圾回收的方式進行探究,明確Java語言回收和操作的機制,掌握C語言中產生垃圾的原因、回收的原理以及具體方式。

        關鍵詞:Java語言;C語言;垃圾回收

        引言:隨著信息技術的高速發(fā)展,為了進一步提升計算機設備的運行速率,及時清除垃圾信息,擴大系統(tǒng)的存儲量,編程人員應該合理地應用編程語言。垃圾回收技術具有較強的使用價值,能在特定的算法中對資源進行回收。不同的編程語言具有不同的垃圾回收模式,比如Java語言和C語言這兩者間就存在一定差異。

        一、Java語言中垃圾回收的方式

        (一)垃圾回收方式

        在Java語言可以使用垃圾回收器進行垃圾處理,它的指針具有嚴格的構建和應用制度。Java語言是C++語言的進一步優(yōu)化,它內部結構更加地簡化,摒棄多重繼承體制中的要素。對垃圾回收器和垃圾收集進行簡單的探究?;厥掌鞑捎脛討B(tài)化運作的模式,可以自動解放內存塊,并對其進行壓縮。它是一個低層次的運行線,程序員的控制對它的運行情況沒有明顯的影響。垃圾收集是一種自動性操作,只能回收那些不被程序占用的部分。它只能在有需求的情況下進行。

        (二)操作機制

        第一,跟蹤算法。這種算法的操作為以根部為出發(fā)點對系統(tǒng)進行全方位的掃描和內存塊識別,判斷其是否處于可達狀態(tài),如果發(fā)生環(huán)形引用的情況,數據的計數的數值一直無法達到0,這樣垃圾就不能被回收。在這種情況下,跟蹤算法能對指針指向的內存塊進行標記,及時清除可以釋放的區(qū)塊,實現回收垃圾的目的。第二,復制算法。在最初的階段,把堆分為一個對象面和多個空閑面,程序在運行中占據對象面的空間。利用這種方法可以把對象面的內容復制到空閑面,及時程序的空間處于充滿的狀態(tài)也能進行復制。這樣就能實現面與面的互換,但是不能對垃圾進行回收[1]。復制算法在壓縮問題中能發(fā)揮重要的作用,通過互換的模式,釋放對象面的空間。

        第三,分代算法。它是復制算法的進一步優(yōu)化,能提升操作的效率,避免程序暫停時間過長的問題。分代算法在大部分程序中都能夠有效地應用,能把堆分為多個組別。之后利用垃圾收集器把需要處理的內存塊轉移到最高級別的子堆中,從而提升操作的效率。第四,引用計數算法。在內存塊原有的基礎上新配置一個引用計數,只要這新內存塊被原有內存塊和外面的指針引用時,它的計數就增加一個數值。反之釋放一個,數值就會減少一個。直到引用計數為0時,就可以對這個內存塊進行回收。第五,壓縮算法。對所有內存塊移到堆中進行處理,把原來的區(qū)域變成空閑的位置,并及時進行更新。第六,自適應算法。它需要根據實際的情況,選用對應的模式進行垃圾處理操作。

        二、C語言中垃圾回收的方式

        C語言能夠與操作系統(tǒng)進行直接地交互,不具備運行時庫。因為運行時庫能夠對內存進行壓縮,減少堆棧占據的空間。所以C語言要想壓縮空間就需要編程人員進行直接操作。

        (一)垃圾產生的原因

        在C語言中,主要有三種內存分配的模式。第一,在棧上構建局部變量。比如,void func(int p1, int p2, int p3){int a = p1;int b =p2;int c =p3}。第二,靜態(tài)區(qū)域分配。比如,void swipe(int** p){int temp=999;*p=&temp;}。第三,動態(tài)區(qū)域分配。在進行分配時,通過calloc進行申請,在free的作用下進行釋放。這種方法相對與其它兩種模式更加方便,能夠在大型程序編寫中發(fā)揮重要的內存分配作用。但是它存在一定的使用風險,即通過calloc進行申請時,其中的動態(tài)內存主要由另外的函數進行使用,程序員在操作中經常用free進行內存釋放,這就導致這部分內容一直處于被分配的情況,增強系統(tǒng)內部不足問題發(fā)生的概率。此外在這種模式下,無法判定內存泄露的具體位置。C語言中的這些內存塊就是垃圾,在操作中需要應用垃圾收集器,它具動態(tài)存儲的功能,能把垃圾回收到空閑鏈接中。

        (二)回收的原理

        C語言垃圾回收的歷史最早起源于上世紀60年代的Lisp語言,這項語言主要依靠動態(tài)分配進行運作在,語言都在堆上進行分配。程序員需要掌握一種模式能對其進行動態(tài)監(jiān)管,這樣才能實現釋放內存的目的,所以垃圾回收技術應運而生。C語言的垃圾回收模塊有三個運行要求:不存在內存泄露的問題、可以及時回收沒有使用的內存、可以對內部進行整理和縮減。在程序中已經分配的內存都有明確的指向,如果某一塊內存不存在指向,這種情況就被稱為內存泄露,即處于不可達的狀態(tài)。當程序處于任意狀態(tài)時,靜態(tài)數據段、程序棧以及寄存器中指針的集合體被稱為根集??蛇_主要以根集為指引,能找到指向它的指針,反之就是不可達[2]。

        垃圾回收器在運行時先以根集為基礎,根據指針所指的方向進行掃描,當找到可以存儲的空間后先進行標記。其次對整個內存進行掃描,再次進行標記操作。最后在完成掃描工作后,需要對所有的內存塊進行探究,如果有的內部塊沒有被標記,說明它在鏈表中沒有發(fā)揮作用,可以進行收回。

        (三)垃圾回收方式

        現階段,C語言中垃圾處理的主要模式為:標記清除法以及引用計數法。第一,標記清除法。這種清除模式起源于Lisp語言,主要分為兩個操作階段:空間標記和垃圾清除。在進行空間標記時,利用垃圾回收器對每個內存塊進行掃描,標記引用的區(qū)域。在完成整體掃描之后,要對內存集中的所有內存進行探究,回收沒有標記的內存塊。應用標記清除法的關鍵點在于應該準確標記被引用的內存塊。在進行垃圾清除時,被標記的對象對稱為可達對象,沒有被標記的就是不可達,即需要清除的垃圾。這時就需要按照次序釋放內存塊中的內存,對所有沒有標記的進行清除。第二,引用計數法。在內存塊原有的基礎上新配置一個引用計數,只要這新內存塊被原有內存塊和外面的指針引用時,它的計數就增加一個數值,如果指針對其進行釋放,它的計數就減少一個數值。當它的計數數值為0時,就需要清除這個內存塊對其中的存儲空間進行重新利用。當這種方法需要配置兩個函數時,可以同時進行增加和減少計數的操作,數值為0時進行內存釋放。

        引用計數法在應用時不會干擾程序的運行,并且具有較好的局部性。但是存在環(huán)形引用的情況,并且在釋放存儲空間時,需要計算引用的數值。標記清除法不涉及環(huán)形引用的問題,并且引用計數的效率較高。但是在操作中需要暫停程序,存在一定的時間損耗。

        結論:綜上所述,Java語言和C語言它們具有不同的垃圾回收模式,但是無論在哪一種語言中,垃圾處理工作都發(fā)揮著不可或缺的作用。所以在進行編程學習時,特別是在入門的階段更需要培養(yǎng)釋放函數的習慣,保障每次使用后都能釋放內存,這樣既能提升空間的利用率,又能保障系統(tǒng)的運轉效果。

        參考文獻:

        [1]楊明.C語言與匯編語言相結合實現STM32F107單片機復位方法研究[J].建井技術,2020,41(01):44-46.

        [2]沈逸飛,任春龍,胡云飛,等.淺析C語言、Java、Python的數組合并方法[J].電腦知識與技術,2020,16(03):78-82.

        作者簡介:

        胡宇濤,男,民族:漢,出生年月1999-03-20,籍貫:湖南郴州, 學歷:本科,研究方向:軟件工程(java、前端、C語言)

        猜你喜歡
        Java語言
        Java語言圖形編程工具的設計及應用
        科技傳播(2017年4期)2017-04-24 20:20:00
        高職《Java語言程序設計》課程的“微課”制作與應用研究
        論開閉原則在JAVA程序設計中的應用
        基于Android平臺的健康醫(yī)療APP設計與開發(fā)
        大學生創(chuàng)業(yè)平臺設計與實現
        計算機軟件開發(fā)中的JAVA編程語言分析
        用戶隱私保護之手機密碼保險箱
        異常結構對Java程序分析的影響
        Android手機三軸加速度傳感器使用
        科技資訊(2015年8期)2015-07-02 18:44:39
        基于Java語言的手機軟件開發(fā)技術分析
        女同性恋一区二区三区av| 国产日韩成人内射视频| 亚洲aⅴ无码国精品中文字慕| 亚洲AV秘 无码一区二区久久| 国产一区二区亚洲一区| 好吊妞视频这里有精品| 欧美 丝袜 自拍 制服 另类| 国产又爽又黄的激情精品视频| 日产精品一区二区三区免费 | 国产无码swag专区| 精品亚洲视频免费观看网站| 91精品国产一区国产二区久久| 成人国产精品一区二区网站公司 | 狠狠丁香激情久久综合| 亚洲免费福利视频网站| 久久国产精品一国产精品金尊| 少妇高潮惨叫正在播放对白| 久久久国产精品福利免费| 亚洲综合伊人久久综合| 免费成人电影在线观看| 国模少妇一区二区三区| 最新国产成人综合在线观看| 亚州av高清不卡一区二区| 国产av夜夜欢一区二区三区| 后入内射欧美99二区视频| 偷拍熟女亚洲另类| 男女射精视频在线观看网站| 国产精品久久久久9999吃药| 久草视频福利| 手机在线看片在线日韩av| 久久人妻av无码中文专区| 少妇人妻200篇白洁| 国产在线看不卡一区二区| 日本刺激视频一区二区| 久久精品99久久香蕉国产| 成人区视频| 久久精品国产亚洲av试看| 少妇高潮av久久久久久| 色一情一区二| 福利一区二区三区视频在线 | 国产精品香蕉在线观看|