Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个 perl 脚本,当我的脚本正在运行 ~ 300 个并行作业用于下载数据并且消耗大量内存时,每当一个高优先级进程出现时,它就会被自动作业杀死。我想弄清楚在运行时需要多少内存,以便我可以在调度脚本之前请求更多内存,或者如果我使用某些工具了解我的代码中占用更多内存的部分,我可以优化它的代码。
关于 OP 对这个问题的评论,如果你想尽量减少内存使用,一定要一次一行/一行地收集和附加数据。如果您一次将所有这些都收集到一个变量中,这意味着您需要一次将所有这些都保存在内存中。
关于问题本身,您可能想了解是否可以让 Perl 代码只运行一次(而不是运行 300 个单独的实例),然后fork创建您的个人工作进程。当您使用 时fork,子进程将比不相关的进程更有效地与父进程共享内存,因此您将只需要在内存中拥有 Perl 二进制文件的一份副本,而不是 300 个副本。
fork