国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

JavaScript的內(nèi)存溢出與內(nèi)存泄漏

2019-12-20 03:04饒佳冬趙綠草
鋒繪 2019年11期
關鍵詞:腳本語言

饒佳冬 趙綠草

摘 要:JavaScript(簡稱JS)是一種非常流行的腳本語言,是一種具有動態(tài)類型的、弱數(shù)據(jù)類型的、基于原型的語言。JS廣泛應用于HTML和Web開發(fā),它常常用來給HTML網(wǎng)頁添加多種多樣的動態(tài)的效果,同時為用戶提供更加舒適美觀的瀏覽效果。

關鍵詞:JS;腳本語言; HTML

1 JavaScript的語言特點及用途

一個完整的JS是由ECMAScript、DOM、BOM這三部分組成。ECMAScript是標準,它描述JS的語法和基本對象;DOM是文檔對象模型,它提供了一組用來操作網(wǎng)頁的對象和接口;BOM是瀏覽器對象模型,它提供了一組用來操作瀏覽器的對象和與瀏覽器進行交互的接口。

JS具有以下幾個特點:

(1)解釋型的語言:JS代碼寫完了不用進行編譯直接運行。不像Java等語言寫完還需要編譯才能運行。

(2)類似與C和Java的語法結構

(3)動態(tài)語言:即JS變量的值比較任意,可以保存任意類型的數(shù)據(jù)。

(4)基于原型的面向?qū)ο螅簩ο髣?chuàng)建的方式根本上只有一種,就是以原型對象為模板創(chuàng)建對象,newObject=create(oldObject)。

2 JavaScript的內(nèi)存溢出

JS的內(nèi)存溢出,指當程序運行需要的內(nèi)存超過了剩余內(nèi)存時就會拋出內(nèi)存溢出的錯誤,它是一種程序運行過程中出現(xiàn)的錯誤。例如:用JS寫一個千萬級別的循環(huán),然后用瀏覽器打開運行,則瀏覽器會非常的卡,甚至會直接報內(nèi)存不足,崩潰了的錯誤。

3 JavaScript的內(nèi)存泄漏

JS的內(nèi)存泄漏,指程序不再用到的內(nèi)存,而沒有及時進行釋放。程序運行的過程中,只要程序提出要求,那么操作系統(tǒng)就必須提供內(nèi)存。對于持續(xù)運行的服務進程,必須要及時釋放不再用到的內(nèi)存。否則,占用的內(nèi)存會越來越高,輕則影響系統(tǒng)性能,重則導致進程崩潰。

常見的內(nèi)存泄漏:

3.1 意外的全局變量

1圖中的變量a就會導致內(nèi)存泄漏。當全局變量用于臨時存儲和處理大量信息時,需要謹慎一點。如果一定要用全局變量存儲大量數(shù)據(jù)時,確保把它使用完之后把它設置為null或者重新定義。

3.2 沒有及時清理計時器或回調(diào)函數(shù)

圖2中啟動循環(huán)定時器后沒有清理定時器,會產(chǎn)生內(nèi)存泄漏的問題。

3.3 閉包

圖3中的變量a被閉包所引用,但是它不會被回收,也產(chǎn)生了內(nèi)存泄漏。閉包是JS開發(fā)的一個重要方面,匿名函數(shù)可以訪問父級作用域里的變量。

為了避免內(nèi)存泄漏,程序員在JS開發(fā)過程中應減少不必要的全局變量或者生命周期較長的對象,及時對無用的數(shù)據(jù)進行回收;注意程序的邏輯,避免死循環(huán)同時避免創(chuàng)建過多的對象,不用的東西要及時回收。

4 結語

本文主要研究了JS的內(nèi)存溢出和內(nèi)存泄漏的部分內(nèi)容,內(nèi)存泄漏每個JS開發(fā)者都要面對的問題,在JS開發(fā)過程中我們深刻理解內(nèi)存泄漏從而盡量避免,這樣我們才能開發(fā)出邏輯嚴謹?shù)某绦颍屛覀兡茉缛粘蔀镴S高級工程師。

參考文獻

[1]鄭明秋.基于對象的JavaScript語言的研究與實現(xiàn)[J].計算機產(chǎn)品與流通,2018,(11).

[2]李曉薇.JavaScript在動態(tài)網(wǎng)頁設計中的應用研究[J].信息系統(tǒng)工程,2019,(1).

猜你喜歡
腳本語言
基于JavaScript在Web設計中應用
一種基于腳本的文書柔性生成技術
一種面向SSC的電信增值業(yè)務的生成方法及實現(xiàn)
基于Unity3D的坦克大戰(zhàn)游戲設計與實現(xiàn)
腳本語言在審計工作中運用的探討
網(wǎng)站服務器維護措施探究
測控設備運行流程遠程定制技術研究
淺析計算機技術在flash動畫中的應用
基于FLASH AS 3的曲柄搖桿機構動畫制作與分析
基于SiPESC平臺的Python擴展模塊開發(fā)
铜山县| 集贤县| 喜德县| 黔东| 罗定市| 松溪县| 山阴县| 天水市| 安溪县| 石屏县| 晋江市| 延长县| 牡丹江市| 项城市| 驻马店市| 布尔津县| 竹山县| 德昌县| 丰都县| 个旧市| 贡山| 鹿泉市| 五寨县| 杭州市| 屯留县| 南投县| 商南县| 乃东县| 班玛县| 江永县| 库伦旗| 古蔺县| 林西县| 衡阳市| 苗栗市| 乾安县| 清镇市| 报价| 镇赉县| 达拉特旗| 潞城市|