Testing vars.putObject和vars.getObject是否会消耗jmeter中的额外内存

Testing vars.putObject和vars.getObject是否会消耗jmeter中的额外内存,testing,groovy,memory-leaks,jmeter,jsr223,Testing,Groovy,Memory Leaks,Jmeter,Jsr223,我有一个测试计划 测试计划 Jsr223取样器 { def lst=[100个元素]; 变量putObject(“lst”,lst); } 回路控制器(100次) { Http请求 预处理器 { lst=vars.getObject(“lst”); } }在您的设置中,您总是引用类实例中的同一对象,它既不分配新的内存部分,也不在新的迭代过程中释放内存 但是,请注意,每个JMeter线程(虚拟用户)都将在其内部有此对象,因此对于1个线程,您将有1个实例,对于2个线程-2个实例 因此,如果您有>1

我有一个测试计划

测试计划
Jsr223取样器
{
def lst=[100个元素];
变量putObject(“lst”,lst);
}
回路控制器(100次)
{
Http请求
预处理器
{
lst=vars.getObject(“lst”);
}

}
在您的设置中,您总是引用类实例中的同一对象,它既不分配新的内存部分,也不在新的迭代过程中释放内存

但是,请注意,每个JMeter线程(虚拟用户)都将在其内部有此对象,因此对于1个线程,您将有1个实例,对于2个线程-2个实例

因此,如果您有>1个线程,并且在所有线程中使用相同的对象,那么最好使用
props
而不是vars,如下所示:

属性与变量不同。变量是线程的局部变量;属性对于所有线程都是通用的

如果要手动清除对象,请在需要时使用以下功能:

vars.remove('lst')

<> P>为了减少内存消耗,您可以考虑将对象放入CSV文件中,并将其加载到内存中,并灵活地跨越线程的值。p>