当我以内部表格(数十万甚至数百万)的形式将大量数据加载到内存中时,我应该通过刷新内部表格来手动清理条目吗?跟他们一起完成了吗?
我假设这些变量一旦离开范围就会自动清理(即程序结束,类实例被释放,......)。但如果我处理长期运行的批处理程序,释放这些临时表是否有意义?
这样做会以任何明显的方式提高性能吗?或者这是避免进入内存限制的唯一原因吗?
答案 0 :(得分:3)
释放未使用的内存是有意义的,特别是如果代码中有明显的位置可以这样做。如果您可以简单地离开范围(方法)并让系统自动丢弃所有局部变量,这很容易。即使您只是避免遇到内存限制,这已经是值得的 - 而且,您可以让系统的所有其他用户更轻松地生活。
答案 1 :(得分:3)
你是对的,在离开子程序或方法时,要清理变量。
我认为刷新表是一种很好的做法,事实上我大多数时间都这样做,但是,在处理大量数据时我使用FREE而不是REFRESH。
来自this link:
要确保表本身已初始化,您可以使用 声明
REFRESH itab。
这总是适用于桌子的主体。还有REFRESH, 他的初始记忆要求仍保留。
要释放此内存空间,请使用语句
免费itab。
您可以使用FREE直接初始化内部表格 释放其整个内存空间,包括初始内存 要求,无需先使用REFRESH或CLEAR语句。喜欢 REFRESH,FREEaccesses桌面,而不是桌面工作区。之后 FREEstatement,内部表仍然存在。它仍然占据着 其标头所需的内存量(当前为256字节)。什么时候 你重新填充表,系统必须分配新的内存空间 线条。
希望有所帮助