一種垃圾回收方法及裝置的制造方法
【技術領域】
[0001]本發明涉及互聯網技術領域,特別涉及一種垃圾回收方法及裝置。
【背景技術】
[0002]C#、Java 和 JavaScript 都有垃圾回收機制(Garbage Collect1n,GC),也就是說執行環境會負責管理代碼執行過程中使用的內存,在開發過程中就無需考慮內存分配及無用內存的回收問題。JavaScript垃圾回收的機制很簡單:找出不再使用的變量,然后釋放掉其占用的內存,但是這個過程不是時時的,因為其開銷比較大,所以垃圾回收器會按照固定的時間間隔周期性的執行。
[0003]但是,在界面注銷后,原來界面所引用的變量和布局無法得到回收,導致這部分所占用的空間無法及時釋放。
【發明內容】
[0004]鑒于上述問題,提出了本發明以便提供一種克服上述問題或者至少部分地解決上述問題的一種垃圾回收方法及裝置。
[0005]本發明提供一種垃圾回收方法,包括:
[0006]獲得操作指令,所述操作指令用于指示注銷界面;
[0007]響應于接收到所述操作指令,將所述注銷的界面下的變量置為空,將所述注銷的界面引用的布局更換為空布局。
[0008]本發明實施例的上述方法,在注銷界面后,將注銷的界面下的變量置為空,將注銷的界面引用的布局更換為空布局。從而在垃圾回收機制啟動時,可以回收界面所引用的變量和布局,從而有效釋放空間。
[0009]在一個實施例中,在所述獲得操作指令之前,所述方法還可包括:
[0010]接收用戶輸入的關閉界面的指令;
[0011]響應于接收到所述關閉界面的指令,生成所述操作指令。
[0012]在一個實施例中,在所述將注銷的界面下的常量置為空、將所述注銷的界面引用的布局更換為空布局之后,所述方法還可包括:
[0013]獲得垃圾回收信息,所述垃圾回收信息中包含所述注銷的界面的界面標識;
[0014]執行垃圾回收操作,根據所述界面標識將所述注銷的界面的變量和空布局回收。
[0015]本實施例中,垃圾回收信息中包含注銷的界面的界面標識,從而在執行垃圾回收操作時,可以快捷、準確的確定出要回收的界面,以及該界面所引用的變量和空布局。
[0016]在一個實施例中,所述將注銷的界面下的變量置為空,可包括:
[0017]將所述變量中除環境中的變量、被環境中的變量所引用的變量之外的變量置為空。
[0018]當變量進入執行環境的時候,比如函數中聲明一個變量,垃圾回收器將其標記為“進入環境”,原則上講不能夠釋放進入環境的變量所占的內存,因為它們隨時可能會被調用。因此,在本步驟中,不回收環境中的變量、被環境中的變量所引用的變量,而是將變量中除環境中的變量、被環境中的變量所引用的變量之外的變量置為空,以便于垃圾回收器回收這些變量及其所占用內存空間。
[0019]在一個實施例中,所述方法還可包括:
[0020]對所述變量中除環境中的變量、被環境中的變量所引用的變量之外的變量進行標記操作;
[0021 ] 對所述標記的變量執行垃圾回收操作。
[0022]本實施例中,對變量中除環境中的變量、被環境中的變量所引用的變量之外的變量進行標記操作,對標記的變量執行垃圾回收操作。由于環境中的變量已經無法訪問到這些標記的變量,因此,對這些變量執行垃圾回收操作,可以及時回收空間。
[0023]在一個實施例中,所述變量為局部變量。
[0024]由于回收的是不再使用的變量,也就是生命周期結束的變量,由于全局變量的生命周期直至瀏覽器卸載頁面才會結束。局部變量只在函數的執行過程中存在,而在這個過程中會為局部變量在棧或堆上分配相應的空間,以存儲它們的值,然后在函數中使用這些變量,直至函數結束。一旦函數結束,局部變量就沒有存在必要了,可以釋放它們占用的內存。
[0025]本發明還提供一種垃圾回收裝置,包括:
[0026]第一獲取模塊,用于獲得操作指令,所述操作指令用于指示注銷界面;
[0027]重置模塊,用于響應于接收到所述操作指令,將所述注銷的界面下的變量置為空,將所述注銷的界面引用的布局更換為空布局。
[0028]本發明實施例的上述裝置,在注銷界面后,將注銷的界面下的變量置為空,將注銷的界面引用的布局更換為空布局。從而在垃圾回收機制啟動時,可以回收界面所引用的變量和布局,從而有效釋放空間。
[0029]在一個實施例中,所述裝置還可包括:
[0030]接收模塊,用于接收用戶輸入的關閉界面的指令;
[0031]生成模塊,用于響應于接收到所述關閉界面的指令,生成所述操作指令。
[0032]在一個實施例中,所述裝置還可包括:
[0033]第二獲取模塊,用于獲得垃圾回收信息,所述垃圾回收信息中包含所述注銷的界面的界面標識;
[0034]回收模塊,用于執行垃圾回收操作,根據所述界面標識將所述注銷的界面的變量和空布局回收。
[0035]本實施例中,垃圾回收信息中包含注銷的界面的界面標識,從而在執行垃圾回收操作時,可以快捷、準確的確定出要回收的界面,以及該界面所引用的變量和空布局。
[0036]在一個實施例中,所述重置模塊,可包括:
[0037]重置子模塊,用于將所述變量中除環境中的變量、被環境中的變量所引用的變量之外的變量置為空。
[0038]當變量進入執行環境的時候,比如函數中聲明一個變量,垃圾回收器將其標記為“進入環境”,原則上講不能夠釋放進入環境的變量所占的內存,因為它們隨時可能會被調用。因此,不回收環境中的變量、被環境中的變量所引用的變量,而是將變量中除環境中的變量、被環境中的變量所引用的變量之外的變量置為空,以便于垃圾回收器回收這些變量及其所占用內存空間。
[0039]本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
[0040]下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
【附圖說明】
[0041]附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明的實施例一起用于解釋本發明,并不構成對本發明的限制。在附圖中:
[0042]圖1為本發明實施例中一種垃圾回收方法的流程圖;
[0043]圖2為本發明實施例中另一種垃圾回收方法的流程圖;
[0044]圖3為本發明實施例中另一種垃圾回收方法的流程圖;
[0045]圖4為本發明實施例中另一種垃圾回收方法的流程圖;
[0046]圖5為本發明實施例一中一種垃圾回收方法的流程圖;
[0047]圖6為本發明實施例中一種垃圾回收裝置的框圖;
[0048]圖7為本發明實施例中另一種垃圾回收裝置的框圖;
[0049]圖8為本發明實施例中另一種垃圾回收裝置的框圖。
【具體實施方式】
[0050]以下結合附圖對本發明的優選實施例進行說明,應當理解,此處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本發明。
[0051]圖1所示為本發明實施例中一種垃圾回收方法的流程圖,如圖1所示,包括以下步驟 S11-S12:
[0052]步驟S11,獲得操作指令,操作指令用于指示注銷界面。
[0053]操作指令例如可以是用戶點擊注銷按鈕的操作指令。比如,用戶點擊該界面上的注銷按鈕,終端接收到該操作后,生成對應的操作指令,該操作指令用于將當前界面注銷。
[0054]步驟S12,響應于接收到操作指令,將注銷的界面下的變量置為空,將注銷的界面引用的布局更換為空布局。
[0055]當接收到注銷界面的操作指令之后,界面被注銷,這時將注銷的界面下的變量置為空,將注銷的界面引用的布局更換為空布局,也就是取消界面所引用的變量和布局。除此之外,將注銷的界面下的常量也置為空。因此,在垃圾回收機制啟動時,不但可以回收界面,還可以回收界面所引用的變量和布局以及常量。
[0056]本發明實施例的上述方法,在注銷界面后,將注銷的界面下的變量置為空,將注銷的界面引用的布局更換為空布局。從而在垃圾回收機制啟動時,可以回收界面所引用的變量和布局,從而有效釋放空間。
[0057]在一個實施例中,在步驟S11之前,如圖2所示,上述方法還可包括以下步驟S13-S14:
[0058]步驟S13,接收用戶輸入的關閉界面的指令。
[0059]用戶輸入的關閉界面的指令可以是用戶用鼠標或手指點擊關閉按鈕或者其它關閉界面的手勢或動作。
[0060]步驟S14,響應于接收到關閉界面的指令,生成操作指令。
[0061]在接收到關閉界面的指令之后,生成操作指令,操作指令指示將該界面注銷。
[0062]在一個實施例中,在步驟S12之后,如圖3所示,上述方法還可包括以下步驟S15-S16:
[0063]步驟S15,獲得垃圾回收信息,垃圾回收信息中包含注銷的界面的界面標識。
[0064]步驟S16,執行垃圾回收操作,根據界面標識將注銷的界面所引用的變量和空布局回收。
[0065]垃圾回收機制的回收時間是不固定的,并不是注銷界面后立即啟動垃圾回收。因此,步驟S16中的執行垃圾回收操作的時間也是不固定的。
[0066]本實施例中,垃圾回收信息中包含注銷的界面的界面標識,從而在執行垃圾回收操作時,可以快捷、準確的確定出要回收的界面,以及該界面所引用的變量和空布局。
[0067]在一個實施例中,步驟S12中的將注銷的界面下的變量置為空,可實施為如下步驟A:
[0068]步驟A,將變量中除環境中的變量、被環境中的變量所引用的變量之外的變量置為空。
[0069]當變量進入執行環境的時候,比如函數中聲明一個變量,垃圾回收器將其標記為“進入環境”,原則上講不能夠釋放進入環境的變量所占的內存,因為它們隨時可能會被調用。因此,在本步驟中,不回收環境中的變量、被環境中的變量所引用的變量,而