SWT 資源管理

來源:互聯網
上載者:User

在Java應用中,我們不會關心什麼時候去明確的釋放資源,因為Java的記憶體回收機制已經處理了所有的資源。但是,在SWT中間,我們必須再次擔負起其中的一些責任(自己釋放資源)。回想一下,SWT的資源是對Java在真是的作業系統中的資源進行記憶體的分配與釋放。在你不再需要它(資源)的時候需要釋放。

       SWT有兩個規則涉及到widget的處理:

1.       如果你建立它,你必須釋放它。

2.       釋放父親的時候釋放所有的孩子。

 

什麼意思呢?那個規則適合於那些具體的環境呢?首先,讓我們看一下第二個規則,它陳述的是一個父控制項會去釋放他的所有的孩子。一個shell或者是任意

一個Composite(組件)對象會去釋放他們的孩子。大多數SWT的控制項在構造的時候需要你指定父親。這就意味著,在大多數的情況下,我們不用明確的在你的widget中去釋放資源。當你用SWT的控制項設計一個Wizard Page、preference page或者任何彈出框的時候,你不需要擔心釋放,因為你涉及到了父控制項,典型的就是Composite對象。

       那第一條規則怎麼應用呢?當你在它們的構造器中沒有指定父組件(parent wigdet)去應用SWT對象的時候。一些例子如:Font、Image和Color。他們是被共用的,就算是它們沒有一個父親。因此,釋放是需要的。Shell類有一個釋放的方法,各種不同的會話頁的類也也一樣。IWorkbenchPart是views和editores的超類, 同樣有一個釋放的方法。應用這些方法去釋放你的widget。

       Font例子(參照原文)

       如果你想通知一個組件(Widget)的釋放,可以通過addDisposeListener方法,這個方法在所有的Widget中都可以用。(覺得這句比較有用,其它具體的例子參照原文)。

       如果你必須管理很多的字型和映像,考慮一下FontRegistry和ImageRegistry類。它們維護註冊的字型和映像,並且會自動的為你去釋放。事實上,你可以永遠不釋放任何被這些註冊器(如:ImageRegistry)管理的東西。

 

由於這篇文章已經翻譯很久了,也忘記了出處在那裡,反正就記得是一本對eclipse講解很好的書

更多精彩內容:http://www.eclipselight.org/

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.