簡體   English   中英

如何防止gnuplot吞噬我的記憶?

[英]How can I prevent gnuplot from eating my memory?

我有一組包含33個數據點的大約500個文件。

我正在使用以下gnuplot腳本繪制這些文件

do for [i=1:477] {
   reset
   set label sprintf('Time=%03d s',i) at 0, 0.4
   @png
   infile = sprintf('%d/lineX2_U.xy',i)
   outfile = sprintf('plot%03d.png',i)
   print i," ",infile," ",outfile
   set output outfile
   set xlabel "y [m]"
   set ylabel "u [m/s]"
   set xrange [-1:1]
   set yrange [0:1.2]
   plot infile  with line ls 1
}

我在哪里使用這個宏

png="set terminal pngcairo size 1800,1800 crop enhanced font \"/usr/share/fonts/truetype/times.ttf,30\" dashlength 2; set termoption linewidth 3"

問題是,直到gnuplot完成,系統的內存使用量才會隨着時間增加。 證明:

> while true; do \grep MemFree /proc/meminfo ; sleep 10s; done;
MemFree:         9720956 kB
MemFree:         9121936 kB
MemFree:         8401072 kB
MemFree:         7682248 kB
MemFree:         6963356 kB
MemFree:         6219948 kB
MemFree:         5501612 kB
MemFree:         4758256 kB
MemFree:         4064564 kB
MemFree:         3346416 kB
MemFree:         2651620 kB
MemFree:         1933656 kB
MemFree:         1241644 kB
MemFree:          547836 kB
MemFree:          152200 kB
MemFree:          126396 kB
MemFree:          118232 kB
MemFree:          131612 kB
MemFree:          117760 kB
MemFree:          117936 kB
MemFree:          118368 kB
MemFree:        10934164 kB
MemFree:        10898460 kB
MemFree:        10863592 kB
MemFree:        10822712 kB

gnuplot腳本執行期間,它正在監視可用內存。 當然,耗盡內存是非常不希望的。 有和沒有reset似乎沒有什么區別。

經過一些測試,我發現通過省略pngcairo終端的crop選項可以解決該問題。

最小的生殖腳本將是:

set terminal png crop
do for [i=1:500] {
 set output sprintf('plot%03d.png', i)
 plot '+' using 1:(rand(0)) w l
}

如何解決由pngcairo終端的crop選項引起的內存問題?

注意:我正在使用gnuplot 4.6

使用crop選項時,這是pngcairo終端中的錯誤。 重現此問題的最小示例是

set terminal pngcairo size 1000,1000 crop
do for [i=1:500] {
  set output 'plot.png'
  plot x w l
  set output
}

在內部,保存裁切圖像的結構未釋放,這導致內存泄漏。 當生成許多圖像時,這變得明顯。

該錯誤在4.6 patchlevel 3中仍然存在,但已在2013-09-09的開發版本中修復,請參閱#1278'pngcairo crop'的內存泄漏

編輯:在補丁程序級別4中已修復。

暫無
暫無

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

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