建立多個表時的記憶體使用情況在創建許多表然後關閉它們時,JMP 似乎會將表或一些殘留內容保留在記憶體中。記憶體有時會在一段時間後被釋放。我在模擬有噪音源的測量情況時遇到了這個問題。 JMP 不會崩潰,但在 RAM 耗儘後,Windows 開始交換到 HDD。
以下是我能夠重複問題的最簡單的範例。
問題:這是預期的行為和/或我做了什麼有趣的事嗎?
請注意遇到相同情況的任何人:取消註釋 Wait(0);消除了問題,但至少在出現問題的情況下似乎有一個小的(〜10%)性能損失。
For (i = 1, i <= 100000, i++,
dt = New Table("Name of the table",
New Column("Name of the column", Set Values(1::20000)),
);
// Do stuff
Close(dt, "No Save");
//Wait(0);
);JMP 14.0.0 64 位,Win 10
品質和工藝工程Re: 創建多個表時的內存使用關於最後一個問題,你可以使用數據表下標:
NamesDefaultToHere(1);
// Make a starting table to update later
mat = J(10, 5, RandomNormal());
dt = AsTable(mat);
dt << setName("My Table");
// Update the last four columns of dt (using data table subscripting) with new values
Wait(3);
mat = J(10, 4, RandomNormal());
dt[1::10, 2::5] = mat;Re: 創建多個表時的內存使用主要是因為我使用了我以前寫過的腳本中的部分並且不想更改它們。 在許多情況下,我更喜歡慢速腳本而不是處理腳本以使其更快。
在某些情況下,數據表從矩陣中獲取數據:
dt = As Table(matrixWithData, private);
有沒有辦法很方便的把數據放到一個已有的數據表中? 這將使更改相對簡單。
Re: 創建多個表時的內存使用為什麼要在每次迭代中創建一個新表? 您可以在迭代之前創建一個數據表,並在每次迭代中更新內容。
Re: 創建多個表時的內存使用@Niko_Porjo ,
當您打開如此多的數據表時,請嘗試包含一個“不可見”或“私有”標誌。 使數據表“不可見”將幫助您看到一些改進,將其設置為“私有”將幫助您看到顯著的改進。