创建多个表时的内存使用情况创建许多表然后关闭它们时,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 ,
当您打开如此多的数据表时,请尝试包含一个“不可见”或“私有”标志。 使数据表“不可见”将帮助您看到一些改进,将其设置为“私有”将帮助您看到显着的改进。