2012-01-12 90 views
-1

我正在一個非常簡單的網站上有5頁的項目。每個頁面都是一個GWT Widget(UI活頁夾)。我當前正在創建所有5個小部件的對象,當我加載基本演示器時,我處理所有歷史令牌更改事件。問題是,該網站在開發模式下加載非常慢。在AppEngine中進行託管時速度更快。我怎樣才能克服這個問題。GWT內存問題

早些時候我用來根據請求創建對象。即,如果用戶點擊鏈接,我將創建該Widget的對象並顯示它。但是,如果他回到上一頁並再次單擊相同鏈接,它將創建一個新對象,並且舊對象內存不會被清除(因爲編譯後它不是Java)。這就是爲什麼我在開始時創建所有對象。

我不知道我出錯的地方。任何人都可以請建議我一個合適的技術來解決這個問題。

+0

我想你想加快你的編譯器: http://stackoverflow.com/questions/1011863/how-do-i-speed-up-the-gwt-compiler – 2012-01-12 13:15:54

回答

3

你問兩個獨立的問題:

  1. 開發模式緩慢:
    發展模式將永遠慢於生產模式因爲封送處理所需的開銷和解封Java對象進入Javascript,反之亦然在開發模式。
    但是,各種瀏覽器的表現不同。由於Chrome的插件系統工作原理Chrome中的開發模式比Firefox或Safari慢得多(有關更多詳細信息,請參見here)。所以我會建議使用Firefox進行調試,直到解決此問題。

  2. 清除未使用對象的內存:
    這與Java vs Javascript無關。
    JavaScript引擎確實有垃圾收集器,並且只要垃圾收集對象,「未使用」對象的內存就會被釋放。但是,您必須確保您沒有任何對未使用對象的引用。
    您是否確認自己有內存泄漏?

+0

嗨烏米特, 感謝您及時的回覆。 當應用程序處於生產模式時,我看到瀏覽器的性能有所下降。我不確定內存泄漏在我的應用程序中。 另外,我曾在Firefox工作,但仍然有時我覺得鉻是好多了。 – 2012-03-07 05:19:38

+0

您可以使用Chrome的開發工具快照您的應用程序的內存使用量/堆大小。如果這在應用程序的生命週期中堆大小不斷增加,則可能會發生內存泄漏。選中[this](http://code.google.com/chrome/devtools/docs/heap-profiling-dom-leaks.html)和[this](http://gent.ilcore.com/2011/08/)尋找memory-leaks.html)更多細節 – 2012-03-07 07:54:24