首页 文章

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

提问于
浏览
6

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

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

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

2 回答

  • 3

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

  • 3

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

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

    this link

    要确保表本身已初始化,可以使用语句REFRESH itab . 这总是适用于 table 的主体 . 使用REFRESH时,表中的初始内存要求仍然保留 . 要释放此内存空间,请使用语句FREE itab . 您可以使用FREE直接初始化内部表并释放其整个内存空间,包括初始内存要求,而无需先使用REFRESH或CLEAR语句 . 像REFRESH一样,FREEaccesses桌面,而不是桌面工作区 . 在FREEstatement之后,内部表仍然存在 . 它仍占用其标头所需的内存量(目前为256字节) . 重新填充表时,系统必须为行分配新的内存空间 .

    希望能帮助到你

相关问题