我完成后会刷新内部表格吗?

时间:2015-10-23 09:41:12

标签: abap

当我以内部表格(数十万甚至数百万)的形式将大量数据加载到内存中时,我应该通过刷新内部表格来手动清理条目吗?跟他们一起完成了吗?

我假设这些变量一旦离开范围就会自动清理(即程序结束,类实例被释放,......)。但如果我处理长期运行的批处理程序,释放这些临时表是否有意义?

这样做会以任何明显的方式提高性能吗?或者这是避免进入内存限制的唯一原因吗?

2 个答案:

答案 0 :(得分:3)

释放未使用的内存是有意义的,特别是如果代码中有明显的位置可以这样做。如果您可以简单地离开范围(方法)并让系统自动丢弃所有局部变量,这很容易。即使您只是避免遇到内存限制,这已经是值得的 - 而且,您可以让系统的所有其他用户更轻松地生活。

答案 1 :(得分:3)

你是对的,在离开子程序或方法时,要清理变量。

我认为刷新表是一种很好的做法,事实上我大多数时间都这样做,但是,在处理大量数据时我使用FREE而不是REFRESH。

来自this link

  

要确保表本身已初始化,您可以使用   声明

     

REFRESH itab。

     

这总是适用于桌子的主体。还有REFRESH,   他的初始记忆要求仍保留。

     

要释放此内存空间,请使用语句

     

免费itab。

     

您可以使用FREE直接初始化内部表格   释放其整个内存空间,包括初始内存   要求,无需先使用REFRESH或CLEAR语句。喜欢   REFRESH,FREEaccesses桌面,而不是桌面工作区。之后   FREEstatement,内部表仍然存在。它仍然占据着   其标头所需的内存量(当前为256字节)。什么时候   你重新填充表,系统必须分配新的内存空间   线条。

希望有所帮助

相关问题