2012-08-02 80 views
3

這是代碼編譯,沒有任何其他方面.. :)99%和1%的代碼編譯的條款或建立

所以,我在我的公司是一個新手,可預見卡住了與赫然緩慢電腦。每次構建內存時,我都遇到Netbeans內存/資源耗盡的問題。我正在編譯我的JAVA文件。

我正在使用7.0,即使我得到這個錯誤,我通過編譯源代碼包以塊方式得到它。 (有時我必須不止一次地編譯選定的文件)

但是自從我搬到7.2以來,這個問題越來越嚴重。我現在必須以更小的塊來編譯軟件包。有時按包打包,按文件打包。因此花費我很多時間,甚至很多頭髮。

我不知道首先編譯哪個包。 netbeans正在照顧這一點。因此,需要資源。

我的大多數同事都擁有強大的電腦,並且沒有任何問題構建整個源代碼庫。所以,我開始獲得合格的軟件包並且只編譯所需的軟件包。所以,這是正確的方法還是構建整個源代碼(即使我只是在任何給定的時間更改總代碼庫的1%)?

幾乎所有人都在構建整個代碼庫,至少有一次,即使大部分更改都只有1%。

+1

是的,所有的代碼。在編譯器編譯期間,您不會知道代碼是如何優化的。如果僅編譯文件,則可能無法將其效果顯示給其他編譯類文件。你可以做的最好的事情是要求更好的計算機 – fmucar 2012-08-02 14:52:45

+0

CPU週期總是比人們週期更便宜(書籍:持續集成)。 我有類似的問題,只是說服經理給我訂購一臺新機器。這並不容易,但是因爲我不想喝酒:) – dbalakirev 2012-08-02 14:54:15

+0

如果您無法切實構建整個項目,您需要與您的經理談談升級或更換計算機的問題。 – Exupery 2012-08-02 15:06:14

回答

2

它是好得多建設整個項目,並按設計工作,然後建立它的99%,它不工作。沒有跡象表明1%是關鍵代碼或非關鍵代碼,並且作爲初學者,您無法輕易發現這一點。

我會通知您的隊友/ IT人員緩慢構建,並詢問可以採取哪些措施來解決問題,而不是以塊爲單位構建代碼。

+0

我們每週都會構建一個代碼庫,並將其存儲在一個存儲庫中。我得到那些我不需要觸摸的部分的類文件,併爲那些我需要的文件提供源文件。那麼,在這種情況下,構建整個項目是否正確?實際上,我將整個項目作爲一個整體,但只編譯一些源文件並添加其他文件。 – Harke 2012-08-02 14:59:04

+0

每週的建設更多的是一個穩定的建設方案比說,主線建設(樹幹)。您的代碼庫存儲庫應該根據主線進行構建。 – Makoto 2012-08-02 18:33:45

2

也許你應該強調一個開發人員有慢速機器妨礙你正在做的工作的問題,當你解釋生產力損失與硬件成本的差異時,你很快就會有一臺新機器。

然後,您可以停止擔心建設「99%」,並解決實際問題。

+0

我沒有建立99%。我只是建立1%,並將其餘的編譯成文件。當我建立100%時,我的記憶力已經耗盡。 – Harke 2012-08-02 15:00:47

+0

這就是我的觀點,你應該能夠建立99%的你沒有建立,並且不會耗盡內存,或者需要很長時間才能完成。 – sjakubowski 2012-08-02 15:02:39

1

所以,這是正確的做法或建立整個源(甚至 雖然我只是更改了總代碼庫的1%,在任何給定時間 )?

我認爲只有在完全瞭解所有內部依賴關係的情況下才能構建項目的某些部分,並且可以保證在修改完成後不會在附近模塊中發生意外行爲。這是我的意見。此外,您可以更改代碼並將其編譯成功,但整個項目構建可能會失敗。

P.S.你應該讓公司給你買一臺新電腦。

+0

嗯..但我增加了其他99%作爲編譯文件,只建立1%。是的,我知道我感動的部分的依賴關係。因此,我想知道是否需要構建完整的源代碼。 – Harke 2012-08-02 15:06:31

+0

如果你已經改變了模塊的某些東西,那麼你最好重新編譯它(至少重新編譯,但是執行一些可用的測試程序也會好得多)。在我的文章中,我只想說,通常項目有很多不同的模塊,其中包含大量的依賴項,這導致了重新編譯所有內容(和測試)總是更好的結論。人腦不能總是記住所有的依賴關係,不能分析每一個變化。編譯和測試要好得多,並且可以節省大量可用於wtf調查的時間。 – gkuzmin 2012-08-02 17:37:24

1

建立整個項目比較好。試着調netbeans.conf

netbeans_default_options="-J-client -J-Xss4m -J-Xms128m -J-XX:PermSize=128m -J-XX:MaxPermSize=512m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.graphics.UseQuartz=true -J-Dsun.java2d.noddraw=true-J-XX:+UseParNewGC -J-XX:+UseConcMarkSweepGC -J-XX:+CMSClassUnloadingEnabled -J-XX:+CMSPermGenSweepingEnabled" 
+0

我做到了。 Xmx增加到512m,然後增加到1024m。仍然遇到內存問題。 – Harke 2012-08-02 15:07:22

0

在理論上可以通過所有的依賴步行,讓自己的依賴層次的地圖,你應該只需要編譯你已經修改了代碼,再加上依賴於它的一切。然而,它不一定是100%的萬無一失,並且需要很大的努力才能獲得很少的收益。這不是我期望成爲新手責任的東西,而是你的上司應該讓你用一些適當的工具包進行整理。