多长时间能内存泄漏RPGLE程序坚持?
-
19-09-2019 - |
题
我投产其使用%alloc
和dealloc
分配内存一些RPGLE代码。程序员应该能够确保没有造成内存泄漏,但我很担心,如果他们不这样做会发生什么。
我的问题是:如果程序员陷入困境,有是的内存泄漏,然后当将这种记忆被回收?它是程序内存离开时或当作业结束?
解决方案
从ILE RPG程序员参考指南:
存储被隐式地释放在 激活组结束。上设置LR 不会释放任何堆存储 通过模块分配,但任何 指针堆存储将丢失。
如果您的RPG程序是在它自己的激活组,则存储器将在程序结束时释放。当然,当你的工作结束,这样做你的激活组。所以结束作业会经常清理分配的任何内存。
其他提示
听起来好像是从C / C ++背景接近RPG。我一直在RPG编程现在约8年,只有时间屈指可数曾经使用ALLOC%()BIF。
这就是说,如果使用的是一个新的激活组,你应该罚款。如果您使用的是命名激活组,你不发出RCLACTGRP命令,或者你使用的是默认激活组你可能会遇到的问题。
事实上,你必须学习激活组机制。内存泄漏可能发生,但不会做的机器(我爱AS400)的任何损害。但是,你可能会损害您的iSeries作业中的其他程序(注:如果您从AS400背景都没有,你必须阅读有关AS400工作机制)。
如果您对自己管理自己的工作中开始将ActivationGroups(在是ofcourse程序),您可以创建单独的,排序内存区的。它需要一定的开销(您必须命名组),但是你有一个安全的环境,在那里你可以强大的东西。
我不熟悉这些内置的功能,但的正常的一切都清理当作业结束(如果交互式或用户注销)。如果你不能找到答案,我可以指出你到另一个社区是你的答案可能是已知的。
不隶属于 StackOverflow