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

        ?

        JAVA程序內(nèi)存低效使用問題的分析核心要點構(gòu)架

        2020-10-21 04:56:31劉紅
        科學(xué)與財富 2020年8期
        關(guān)鍵詞:Java語言分析

        劉紅

        摘 要:JAVA語言擁有廣泛的應(yīng)用空間,由于技術(shù)成熟,上手簡單效果穩(wěn)定因此在很多程序開發(fā)中都選用JAVA語言開發(fā)程序。經(jīng)過數(shù)代的更迭,其程序的完整性和拓展性得到了大大的提升,但縱觀JAVA語言程序發(fā)展的過程,其內(nèi)存的低效使用一直是導(dǎo)致其性能無法突破瓶頸的重要影響因素,本文結(jié)合作者實際的工作經(jīng)驗,對空閑空間、泄露空間、蚍蜉空間三類導(dǎo)致內(nèi)存失效的情況進(jìn)行分開介紹和分析希望能夠幫助更多的程序開發(fā)者和從業(yè)人員能夠更加全面深刻的了解造成JAVA語言程序內(nèi)存低效的因素。

        關(guān)鍵詞:JAVA語言;內(nèi)存低效;分析

        1.JAVA語言概述

        JAVA語言由于其平臺獨立性和面向普通消費(fèi)者的特點,成為了使用最為廣泛的編程語言之一,在大量的個人程序網(wǎng)站都占據(jù)重要的份額。JAVA語言編制成字碼節(jié)后在JAVA虛擬機(jī)上進(jìn)行運(yùn)行,其內(nèi)存回收工作由JVM提供的垃圾回收站完成。由于回收站的工作是自動進(jìn)行的,所以程序員無需管理垃圾回收,減輕了程序員的精力,分散情況。很多人對Java內(nèi)存回收缺乏認(rèn)識,認(rèn)為其通過自動垃圾回收處理的過程不會出現(xiàn)問題,事實上java也會存在內(nèi)存泄漏的情況及有部分存在價值的對象無法被回收,而這些對象自身所占據(jù)的內(nèi)存空間也無法得到釋放和循環(huán)使用,導(dǎo)致一部分內(nèi)存空間被占用。當(dāng)這種情況持續(xù)累積下去,當(dāng)gym無法再重新申請到足夠的內(nèi)存空間時,系統(tǒng)就會崩潰告警,對于一些大規(guī)模的應(yīng)用程序,特別是持續(xù)時間長,需要提供關(guān)鍵服務(wù)的server端程序,這種崩潰即使持續(xù)時間短,也會對其服務(wù)質(zhì)量和管理造成致命打擊,因此是要嚴(yán)格杜絕這種情況出現(xiàn)。使用Java語言進(jìn)行程序編程時,首先要對這個內(nèi)在機(jī)理有明確的認(rèn)識,只有在此基礎(chǔ)上才能夠有效規(guī)避內(nèi)存低效使用的情況。

        2.Java程序的內(nèi)存低效使用

        2.1泄露對象、蚍蜉對象、空閑對象

        在使用Java語言進(jìn)行程序編程時很多內(nèi)存空間的應(yīng)用是不定量的,需根據(jù)當(dāng)時編譯情況確定,由于變量的存在屬于內(nèi)存空間,需要強(qiáng)制一部分空閑空間用于,在高內(nèi)存占用情況下予以空間填補(bǔ)。但如果是機(jī)械化的保留一定比例或固定容量的空間,又會使得內(nèi)存容量受到限制,有時會產(chǎn)生內(nèi)存空間被浪費(fèi)的情況,因此需要在程序運(yùn)行過程中采取動態(tài)分配的方式,讓其在不需要提前預(yù)留空余空間時被釋放出來,以提高可使用空間的總?cè)萘俊ava語言內(nèi)存機(jī)制的特點就是其內(nèi)存回收工作完全是由jym提供的垃圾收集器自動進(jìn)行的,這個過程無法進(jìn)行人為的干預(yù),所以如果gym垃圾處理程序自身出現(xiàn)了內(nèi)存占用過多或內(nèi)存使用不合理的情況,在外部機(jī)制下是無法對其進(jìn)行控制的,所以也會給內(nèi)存釋放造成一定的困難。

        Java語言編程的程序存在大量生存期較短的臨時對象或者一次性對象,這些對象一般是未完成某程序運(yùn)行,環(huán)境所添加的一次性產(chǎn)物,這些對象在后期使用中沒有任何使用價值,理論上應(yīng)該在使用之后就自動剔除,讓出多余的內(nèi)存空間,但是現(xiàn)實往往是這些對象長期存在占用大量的內(nèi)存,導(dǎo)致GC頻繁啟動,消耗了大量的程序反應(yīng)時間。編程人員一般將其稱之為蚍蜉對象,這些對象在實際應(yīng)用中用處極少,但是其存在所占有的內(nèi)存空間卻是長時間的,對于整個程序運(yùn)作的內(nèi)存動態(tài)管理會造成很大的困難。另一種情況是對象被分配后長時間處于空閑狀態(tài),而又沒有相應(yīng)的機(jī)制,對這種長期處于空閑狀態(tài)的對象進(jìn)行管理,導(dǎo)致其也許整個生命周期的使用場景只有很短的時間,而這類對象最后會被GC回收,但從分配到被回收之間需要很長的周期,90%以上的時間都處于不活動狀態(tài),所以這類事實上占據(jù)了內(nèi)存空間,但是實際使用場景和比例極少的對象程序編程人員將其稱之為空閑對象。這對象在處理的過程中前文所提及的蚍蜉對象有很多的相似之處。

        2.2Java內(nèi)存低效使用的影響

        必須應(yīng)用是需要一定的內(nèi)存空間作為支持的,如果內(nèi)存長期保持低效運(yùn)用狀態(tài),那么可利用的內(nèi)存容量就會被壓縮,在程序運(yùn)行過程中也許會瞬間用完內(nèi)存空間導(dǎo)致gym所能申請的所有內(nèi)存全部被使用完畢,導(dǎo)致jIm崩潰,另一種情況就是導(dǎo)致GC頻繁回收,在回收過程中持續(xù)占用著機(jī)能,導(dǎo)致程序的運(yùn)行效率受到了影響,通過對不同使用對象的處理和使用在內(nèi)存低效上的對比,我們可以發(fā)現(xiàn),Java程序?qū)?yīng)泄漏對象時,泄漏對象不會對GC造成影響,但是會產(chǎn)生顯著的空間效率影響和時間效率影響,但目前對其進(jìn)行檢測難度簡單,但對其進(jìn)行修正則需要花費(fèi)大量的時間和資源。而蚍蜉對象其既能夠改變GC同時對時間效率的影響很明顯,但是在空間使用效率的影響方面卻很輕微,目前對其進(jìn)行檢測的手段很多檢測過程較為簡單,同時修的難度也不大,空閑對象能夠?qū)C產(chǎn)生影響,會對空間使用效率和時間使用效率都產(chǎn)生極大的影響,對其進(jìn)行檢測難度很大,同時對其進(jìn)行處理的難度也很大。

        通過對三種對象造成的影響進(jìn)行對比,我們可以發(fā)現(xiàn)蚍蜉對象在GC啟動之后就會被回收,所以來不及對空間效率造成太嚴(yán)重的影響,而泄露對象和空閑對象,則會由于持續(xù)占據(jù)內(nèi)存,無法被循環(huán)利用,造成了空間效率的降低。但在實際的程序運(yùn)行過程中蚍蜉對象的存在會導(dǎo)致回收機(jī)制頻繁啟動,這會造成時間效率的降低。而由于泄露對象和空閑對象會增加GC的檢測時間,所以也在一定程度上降低了程序的時間效率。在檢測修正的層面來分析,當(dāng)gym關(guān)閉前,可以對泄漏對象進(jìn)行檢測,檢測到的幾率很大,而且由于其整體的檢測難度較低,所以一般會保持很強(qiáng)的準(zhǔn)確性。而泄露對象一般是由于自身的邏輯缺陷所造成的,所以對此類問題進(jìn)行修正時,首先要對其行為邏輯進(jìn)行分析,這就增加了修正的難度。蚍蜉對象一般是臨時性出現(xiàn)的,所以通過在單位時間內(nèi)對GC的活動頻率進(jìn)行檢測,即可判斷是否存在大量的相似對象,簡單的對其進(jìn)行創(chuàng)建位置進(jìn)行修正,因此對其進(jìn)行檢測和修正的難度理論上來說都不大,對于空閑對象必須要對整個對象的生命周期的行為信息進(jìn)行綜合分析才能判斷其活動其和空閑期所以對其進(jìn)行檢測數(shù)據(jù)化費(fèi)的計算資源更多,所以用時更長而對其進(jìn)行修正時,要考慮到對象的使用邏輯和行為邏輯,也要占用大量的資源和時間,所以對其進(jìn)行修正的難度也很大。

        3.當(dāng)前的研究工作成果

        很多的泄露對象都是在操作時被臨時創(chuàng)建的,但是卻在操作結(jié)束之后沒有得到及時的回收,所以如果設(shè)定臨時對象的期望生命周期和存貨周期,如果其超過了期望生活周期,那么對象就是泄露對象,針對Java中的數(shù)組提出一個結(jié)合前項數(shù)據(jù)流分析和后項控制流分析的算法,就可以增加對此類對象的分析效率。

        蚍蜉對象而生存周期較短,會引起頻繁的GC啟動,因此在進(jìn)行程序檢測時只要使用能夠?qū)C程序啟動敏感的程序就可以大概率的覆蓋此類對象的所在區(qū)域。由于空閑對象的生存周期較長,對其進(jìn)行檢測需要符合更多方面的信息,所以對整個中其行為和對象活動都要進(jìn)行檢測,在目前看來還沒有一個能夠有效減少計算時間和資源的方式。

        4.當(dāng)前工作成效不足的原因分析

        此前相關(guān)研究人員在進(jìn)行對象研究時,對于泄露對象的研究方向集中在如何對其進(jìn)行準(zhǔn)確檢測,在如何修正方面沒有太多的資源投入,導(dǎo)致目前有效的解決方案數(shù)量較少,不能對空閑空間進(jìn)行相應(yīng)的修正和檢測,多數(shù)工具都要用戶對程序行為的實現(xiàn)具有基礎(chǔ)了解,才能夠發(fā)揮到工具的效果,我肯定會限制相應(yīng)的工具普及和推廣的速度和范圍,同時也增加了更多的不確定性。

        結(jié)束語:

        雖然當(dāng)前研究人員對一些可觀察信息在一定程度上反映了對象行為和使用邏輯,禁行了行為勾勒,但是整個畫像并不全面,如果想要對內(nèi)存低效使用進(jìn)行更加深入的檢測和修正,就必須全面的對所有對象的行為邏輯和相應(yīng)的產(chǎn)生信息進(jìn)行覆蓋,獲取最全面的數(shù)據(jù)支持。

        參考文獻(xiàn):

        [1]柳永坡,賈曉霞,吳際, 等.Java程序內(nèi)存低效使用問題的分析[J].計算機(jī)工程,2008,34(23):84-85,91. DOI:10.3969/j.issn.1000-3428.2008.23.031.

        [2]李文杰.Java程序內(nèi)存使用分析技術(shù)研究[D].江蘇:中國礦業(yè)大學(xué),2016.

        [3]王志花.Java程序內(nèi)存行為探究[J].硅谷,2012,(7):182-182,190.

        猜你喜歡
        Java語言分析
        隱蔽失效適航要求符合性驗證分析
        電力系統(tǒng)不平衡分析
        電子制作(2018年18期)2018-11-14 01:48:24
        基于Android平臺的健康醫(yī)療APP設(shè)計與開發(fā)
        電力系統(tǒng)及其自動化發(fā)展趨勢分析
        大學(xué)生創(chuàng)業(yè)平臺設(shè)計與實現(xiàn)
        計算機(jī)軟件開發(fā)中的JAVA編程語言分析
        用戶隱私保護(hù)之手機(jī)密碼保險箱
        基于Java語言的手機(jī)軟件開發(fā)技術(shù)分析
        中西醫(yī)結(jié)合治療抑郁癥100例分析
        在線教育與MOOC的比較分析
        色yeye在线观看| 亚洲 卡通 欧美 制服 中文| 中文字幕精品一二三四五六七八| 亚洲第一看片| 在线日韩中文字幕乱码视频| 亚洲精品第一页在线观看| 久久久无码人妻精品无码| 五月天激情综合网| 国产免费一区二区av| 日韩精品在线观看在线| 成人影院yy111111在线| 中文字幕无码无码专区| 亚洲午夜无码久久久久软件| 一区二区视频在线国产| 成年女人vr免费视频| 无遮高潮国产免费观看| 亚洲无码观看a| 中文字幕亚洲精品在线| 久久久精品一区aaa片| 日韩另类在线| 一个人看的在线播放视频| 午夜天堂一区人妻| 麻豆久久久9性大片| 国产精品大屁股1区二区三区| 成人性生交大片免费看i| 国产精品亚洲专区无码不卡| 精品国产aⅴ无码一区二区| 中文字幕国产精品中文字幕| 亚洲天码一区二区三区| 男人和女人做爽爽免费视频| 欧美色aⅴ欧美综合色| 蜜桃av夺取一区二区三区| 国产精品一区二区黑丝| 亚洲成av人片在线观看ww| 国产精品午夜波多野结衣性色| 亚洲精品一区二区三区四区| 精品国际久久久久999波多野| 免费男人下部进女人下部视频 | 日本中文字幕av网址| av在线免费观看网站免费| 免费观看又色又爽又黄的|