欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

DWR內存兼容及無法調用問題解決方案

 更新時間:2020年10月16日 15:28:44   作者:cuisuqiang  
這篇文章主要介紹了DWR內存兼容及無法調用問題解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

在上次遇到DWR內存泄漏問題后根據網上的內容對JS文件進行修改,修改后發(fā)現還有一些兼容的問題,同時還出現不能調用的一些情況。

而且根據統(tǒng)計DWR就算內存泄漏,也不是特別嚴重,除非你一個瀏覽器跑幾天不關閉,而且實時刷新!

經過再次查詢,得知IE瀏覽器有自己的一個垃圾回收的函數:CollectGarbage();

CollectGarbage,是IE的一個特有屬性,用于釋放內存的使用方法嘛應該是,將該變量或引用對象,設置為null或delete

然后在進行釋放動作在做CollectGarbage前,要必需清楚的兩個必備條件:

引用

- 一個對象在其生存的上下文環(huán)境之外,即會失效。

- 一個全局的對象在沒有被執(zhí)用(引用)的情況下,即會失效。

對于對象何時失效,有這樣的一些解釋:

function testObject() {
var _obj1 = new Object();
}

function testObject2() {
var _obj2 = new Object();
return _obj2;
}

// 示例1
testObject();

// 示例2
testObject2()

// 示例3
var obj3 = testObject2();
obj3 = null;

// 示例4
var obj4 = testObject2();
var arr = [obj4];
obj3 = null;
arr = [];

在這四個示例中:

- “示例1”在函數testObject()中構造了_obj1,但是在函數退出時,它就已經離開了函數的上下文環(huán)境,因此_obj1失效了;

- “示例2”中,testObject2()中也構造了一個對象_obj2并傳出,因此對象有了“函數外”的上下文環(huán)境(和生存周期),然而由于函數
的返回值沒有被其它變量“持有”,因此_obj2也立即失效了;

- “示例3”中,testObject2()構造的_obj2被外部的變量obj3持用了,這時,直到“obj3=null”這行代碼生效時,_obj2才會因為引用關系消失而失效。

- 與示例3相同的原因,“示例4”中的_obj2會在“arr=[]”這行代碼之后才會失效。

另外我發(fā)現許多人都說了這樣一句話:

最后之最后,關于GC的一個補充說明:在IE窗體被最小化時,IE將會主動調用一次CollectGarbage()函數。這使得IE窗口在最小化之后,內存占用會有明顯改善。

我只能說,調用CollectGarbage()函數會有意外的收獲,但是他不是萬能的,也不是調用就能釋放內存更不是說調用后和將瀏覽器最小化一次的效果一樣。

我們是每秒五次刷新,每次刷新點有一百多處,這樣瀏覽器的DOM始終是在增加和更新東西。算下來,就是跑一個小時也是有很大消耗的。

更何況我們的軟件要跑在一個定制的機器上,發(fā)現這個機器的硬件有兼容問題,我們將瀏覽器更新到IE7.0,進行數據實時刷新后發(fā)現,內存一直增長,直到瀏覽器崩潰。但是不同機器崩潰的時機不同。

我在每次更新后調用垃圾回收函數,發(fā)現瀏覽器的內存仍在增加,但是間隔的有增有加,雖然總體還是在增加。由此,我們在那個機器上跑了十幾個小時,瀏覽器內存沒有超過50M。

很少有那個頁面會這樣大量的刷新,并跑這么長時間吧,可是我們遇到了。

把問題歸咎與DWR我發(fā)現不是很合理,至少現在我這么覺得,但是對于頁面有大量刷新和需要長時間運行這個需求來說,我覺得還是需要深入研究一下的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Bootstrap 組件之按鈕(二)

    Bootstrap 組件之按鈕(二)

    Bootstrap是Twitter推出的一個用于前端開發(fā)的開源工具包。本文給大家介紹Bootstrap 組件之按鈕的相關知識,感興趣的朋友一起學習吧
    2016-05-05
  • 解決webpack多頁面內存溢出的方法示例

    解決webpack多頁面內存溢出的方法示例

    這篇文章主要介紹了解決webpack多頁面內存溢出的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • 微信小程序canvas開發(fā)水果老虎機的思路詳解

    微信小程序canvas開發(fā)水果老虎機的思路詳解

    這篇文章主要介紹了微信小程序canvas開發(fā)水果老虎機的思路,本文通過思路代碼分步驟給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • js unicode 編碼解析關于數據轉換為中文的兩種方法

    js unicode 編碼解析關于數據轉換為中文的兩種方法

    這篇文章主要介紹了js unicode 編碼解析關于數據轉換為中文的兩種方法,需要的朋友可以參考下
    2014-04-04
  • 關于預加載InstantClick的問題解決方法

    關于預加載InstantClick的問題解決方法

    本篇文章主要介紹了關于預加載InstantClick的問題解決方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Bootstrap源碼解讀按鈕(5)

    Bootstrap源碼解讀按鈕(5)

    這篇文章主要源碼解讀了Bootstrap按鈕,介紹了Bootstrap各式各樣的按鈕,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS中Promise函數then的奧秘探究

    JS中Promise函數then的奧秘探究

    then()方法用于指定當前實例狀態(tài)發(fā)生改變時的回調函數。它返回一個新的Promise實例。下面這篇文章主要給大家介紹了關于JS中Promise函數then的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-07-07
  • JavaScript中判斷為整數的多種方式及保留兩位小數的方法

    JavaScript中判斷為整數的多種方式及保留兩位小數的方法

    這篇文章主要介紹了JavaScript中判斷為整數的多種方式,以及保留兩位小數的方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • axios使用攔截器統(tǒng)一處理所有的http請求的方法

    axios使用攔截器統(tǒng)一處理所有的http請求的方法

    這篇文章主要介紹了axios使用攔截器統(tǒng)一處理所有的http請求的方法,通過一段實例代碼給大家介紹了axios攔截器使用,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 如何為你的JavaScript代碼日志著色詳解

    如何為你的JavaScript代碼日志著色詳解

    這篇文章主要給大家介紹了關于如何為你的JavaScript代碼日志進行著色的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JavaScript具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04

最新評論