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