2012-12-17 21 views
2
配置GWT碼驗證

我會與我有一些具體的問題導致,並按照他們與上下文:在Eclipse

  • 如何GWT碼驗證在Eclipse配置如何控制?
  • GWT代碼驗證都做了什麼?
  • 當它掃描java類時,它是否執行任何類加載?
  • 爲什麼它掃描不在客戶端/共享包中的類?我該如何讓它停止?

我正在運行Eclipse Juno。最近我的團隊的另一位成員將我們的項目從GWT 2.4升級到2.5,我注意到的第一個影響是GWT代碼驗證會消耗資源,導致我的工作空間停頓,最終導致Java堆錯誤 - 迫使我殺死月食。

你要知道,我有什麼應該是充足的堆在我eclipse.ini配置的,具體是:-Xms256m -Xmx1536m

儘管如此,奪回了我的工作區控制我未選中Project --> Build Automatically,配置使用Eclipse Preferences --> General --> Show Heap Status顯示堆使用情況,並撞着將我的堆大小從eclipse.ini改爲-Xms2048m -Xmx3072m,就像試驗一樣,看看會發生什麼。

做完這些之後,我再次打開eclipse並允許它自動生成,在進行GWT代碼驗證階段時仔細注意進度條,以及堆大小:爬上爬,攀爬,最終在2G消費以北的某個地方達到峯值。最終,它完成了(雖然它花了太長時間,根本沒有合理的時間)。在完成一分鐘後,一個巨大的垃圾收集事件將堆棧降低到只有300兆字節。

我進度條下方看到發生了什麼更有趣:在GWT碼驗證似乎是每一個掃描文件*.java在我的整個項目:不只是那些在clientshared包,但一切。我看到了GWT編譯器在一百萬年內不會看到的類名。

所以看起來,儘管GWT編譯器足夠聰明,可以從入口點GWT模塊文件開始搜索並從那裏搜索出來,但GWT代碼驗證過程似乎對所有內容都進行了蠻力搜索。

上帝幫助它,如果它在做任何類加載的方式。這些舊的服務器端類中的一些包含了我的祖先的古代罪惡,連接到靜態初始化器中的外部資源以及什麼都沒有。

是否有某種方式可以將此驗證配置爲對掃描的內容更加簡潔?

+0

這是令人印象深刻的分析。我們只是取消選中並且避免了來自正常自動構建的GWT驗證。首選項 - >驗證 - >暫停所有驗證器。我們更喜歡GWT編譯器在構建機器上進行驗證,而不是在工作站上運行GWT驗證。希望看看這個Q/A線程是否有其他解決方案。 – SSR

回答