簡體   English   中英

減少gcc內存使用量

[英]Reduce gcc memory usage

目前,我必須在非常有限的硬件上構建一個相當大的項目(核心i5只有2GB RAM)。 當運行make 4線程gcc崩潰時,由於每個線程占用高達40%的RAM。 我google了一下,找到了這個鏈接 一些人反饋它有效。但是,不是我。

我就是這樣做的。

/usr/bin/qmake-qt4 -r -spec linux-g++ $DEBUG_FLAGS -o Makefile "QMAKE_CXXFLAGS +=  --param ggc-min-expand=10 --param ggc-min-heapsize=8192"  /home/build-srv/LargeProject/largeProject.pro

make輸出確實有標志:

g++ -c -pipe --param ggc-min-expand=10 --param ggc-min-heapsize=8192 -std=c++11 -std=c++11 -g -Wall -W -D_REENTRANT -fPIC -D_GLIBCXX_USE_CXX11_ABI=0 -DBASE_LIBRARY -DQT_DECLARATIVE_DEBUG -DQT_DECLARATIVE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++  -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtDeclarative...

但是ram的使用情況仍然相同。 唯一的方法是減少單線程構建,這非常慢。

我做錯了什么? 有沒有更好的解決方案。

更新

  • 是的,硬件部門將RAM容量“升級”到4GB,現在它在構建項目時響應。(實際上一根棍子壞了,所以他們需要等待更換)。 但我很好奇,在像VPS這樣的有限資源系統中我們如何處理? (除了減少構建線程?)
  • 我會在編譯/鏈接時搜索占用大量RAM的文件。 我不記得名字,因為那不是我的模塊。
  • 構建服務器有2GB的交換空間。

告訴您的雇主他們為您的工作提供的工具是不充分的。 對於你正在做的事情,這是一個系統的笑話,我認為它是由雇主提供的。 你需要更多的RAM,毫無疑問。 它應該足夠簡單,以擴展RAM,沒有i5主板只有2G作為最大。

否則 - 是的,你需要限制線程數,例如使用make -j2甚至make -j1. 現代編譯器需要大量RAM而不是因為它們浪費,而是因為它們一次性將整個翻譯單元的信息保存在內存中以提供全局優化。 鏈接時代碼生成需要更多內存,因為它包含有關整個應用程序的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM