已解决,请参阅编辑2

你好,

我一直在编写一个Perl程序来处理本地(专有)程序的自动升级(对于我工作的公司).

基本上,它通过cron运行,不幸的是有内存泄漏(或类似的东西).问题是泄漏只发生在我不看的时候(也就是说当通过cron运行时,而不是通过命令行).

我的代码不包含任何循环(或其他)引用,因此常用的工具对我没用(Devel :: Cycle,Devel :: Peek).

我怎样才能弄清楚内核占用了多少内存呢?

基本上,代码SFTP进入服务器(使用“`sftp …“`),调用OpenSSL来验证文件,然后在需要更多文件时更多SFTP并安装它们(解压缩它们).

在第一次SFTP会议之前我已经看到了延迟(约15秒),但它从来没有使用太多的内存来杀死(在我面前).

如果我不能解决这个问题,我将需要用不同的语言重写,这将花费宝贵的时间.

编辑:内核打印出以下消息,这让我相信它是内存泄漏:

[100023.123] Out of memory: kill process 9568 (update.pl) score 325406 or a child
[100023.123] Killed Process 9568 (update.pl)

我不相信这是cron的问题,因为在通过命令行运行它时会停止(有时约为15秒).此外,没有使用环境变量(至少通过我所写的,可能是潜在的事情吗?)

编辑2:我自己发现了这个问题,并得到了mobrule的以下评论的帮助(回答这个问题).事实证明,脚本每天只从用户的crontab(非root用户)调用一次,并且(非root权限)导致特殊的无限循环情况.

对不起伙计们,我觉得以前没找到这个有点傻,但谢谢.

mobrule,如果你提交你的评论作为答案,我会接受它,因为它导致我发现问题.

结束编辑

谢谢,
布赖恩

附:我可以发布小代码片段,但不是由于公司政策而发布的全部内容.

解决方法

你怎么知道这是内存泄漏?我可以想到操作系统会杀死一个程序的许多其他原因.

我要问的第一个问题是“这个程序是否始终在命令行中正常工作?”.如果答案是“否”,那么我先解决这些问题.

另一方面,如果答案是“是”,我会调查在cron和命令行下执行程序之间的所有区别,以找出它为什么行为不端.

找到Perl内存泄漏的更多相关文章

  1. ios – 为什么重复创建和删除SKShapeNode和SKNode导致内存泄漏?

    使用Xcode附带的spritekit模板,我修改场景如下:该应用程序似乎继续使用更多内存,直到它挂起或崩溃.使用泄漏和分配工具,我发现了以下内容:泄漏:分配:从图像中可以看出,存在大量使用内存的Malloc调用.我不直接调用Malloc–似乎这些调用是由SpriteKit完成的.同样,存在许多内存泄漏,这似乎也是由于SKShapeNode,SKNode或其他SpriteKit对象造成的.我如何解决或解决此内存(泄漏)问题?

  2. ios – Xcode显示内存泄漏,但仪器没有

    当我从Xcode运行我的应用程序时,很明显我有一个内存泄漏:当我提供一个自定义的ViewController时,内存增加,但是当我关闭它时,它不会退回.所以我也检查了使用仪器的分配工具,但这说明了一个不同的故事:可以看出,当我呈现ViewController时,仪器会显示尖峰,但是当内存使用被关闭时,内存使用率将恢复到以前的级别.我已经检查了我的代码至少15次,我个人无法找到任何内存泄漏,因此同意

  3. ios – 内存泄漏与UIWebView和Javascript

    清楚地包含一个Javascript文件到我的HTML是使UIWebView泄漏内存.当我重复使用相同的UIWebView对象时,或者每当我有内容实例化一个新的漏洞时,会出现泄漏的事实,导致我认为必须有一些JavaScript文件被loadHTMLString处理,导致泄漏.有人知道如何解决这个问题吗?

  4. ios – SBJson – 有内存泄漏?

    我刚刚克隆了SBJson框架的git存储库,并将源代码导入到我的应用程序中.跑了一个静态内存探查器,并从我看到的结果有点害怕.看图这怎么可能?我怀疑这个知名图书馆的开发者没有看到这个?事实上,如果运行内存配置文件,它会显示此库中的内存泄漏.有任何想法吗?

  5. Swift快速入门五集合

    相关文章Swift快速入门(一)第一个Swift程序Swift快速入门(二)基本数据类型Swift快速入门(三)运算符Swift快速入门(四)流程控制前言Swift提供了数组和字典两种集合类型来存储数据,Swift的数组用来存储顺序相同类型相同的类型,字典则采用kay-value的形式存储数据。修改字典字典提供了updataValue()方法来修改字典的value值,该方法会返回一个Sting?

  6. 14.6 Swift中weak解决循环强引用

    /**循环强引用ARC不是万能的,它可以很好的解决内存过早释放的问题,但是在某些场合下不能很好的解决内存泄漏的问题。直接用官方例子*/classPerson{letname:Stringinit{self.name=name}varapartment:Apartment?这就是所谓的循环强引用*///这是强引用,不要认为可选类型就是弱引用啊,只有通过weakuNowned才是弱引用varjohn:Person?*//**在变量tenant前加上weak修饰,也就是将其中的一个变量设置为弱引用就行了。joh

  7. Swift闭包中的内存泄漏

    内存泄漏不仅破坏用户体验,而且会影响性能甚至应用的安全。既然内存泄漏如此的重要,所以这篇文章在这篇文章将说一说Swift闭包中的内存泄漏问题。Apple在文章中详细介绍了循环强引用的概念、何为内存泄漏、如何避免。内存泄漏的调试上面我们分析了大部分闭包中的循环引用问题,我们得知并不是所有的情况下都会导致内存泄漏。

  8. Android – 从低内存条件恢复

    我正在开发一个非常强烈的图像处理应用程序,我在水平FragmentStatePagerAdapter中有多个ListFragments.我积极地采用几乎每一个窍门和建议,我能够在这里和其他地方找到.我下载位图并将其保存到SD和软参考存储器缓存.然而,当我在某些时候使用该应用程序,我开始在LogCat中看到消息,就像下面一样如果我继续,上面的消息将变得更加迫切并且不可避免的应用程序将与OutOfMe

  9. Android内存泄漏的原因及解决技巧

    这篇文章主要介绍了Android内存泄漏的原因及解决技巧,帮助大家更好的利用Android进行开发,感兴趣的朋友可以了解下

  10. nodeJs内存泄漏问题详解

    由于内存泄漏在Node.js中非常的常见,可能在浏览器中应用javascript时,对于其内存泄漏不是特别敏感,但作为服务器语言运行时,你就不得不去考虑这些问题。

随机推荐

  1. 数组 – Perl中有什么神奇的数组?

    在Perldocumentationforreverse中,我发现:“请注意,将数组反转到自身(如@a=reverse@a)将尽可能保留不存在的元素;即对于非魔法数组或具有EXISTS和DELETE方法的绑定数组.什么属性区分神奇和非魔法阵列?解决方法一个神奇的阵列是一个执行它的操作不仅仅是改变内容.只有内置的魔术阵列是@ISA,而且这是非常不明显的.正如句子所暗示的,魔术阵列主要是一个绑定的阵列

  2. perl – 使用“isa”方法的最佳方式?

    什么是“最好的”使用方式“isa()”可靠?解决方法Scalar::Util实现明确更好.它避免了eval{}的开销,它总是导致设置一个附加变量.Scalar::Util实现更容易阅读.如果eval也失败了,我相信发生的是你在树之前向后走到eval之前的状态–这是如何实现复位状态.这带来了额外的故障开销.基准根本不是一个对象对象传递isa检查对象出现故障现象检查测试代码:我使用这是为i486-linux-gnu-thread-multi建立的perl,v5.10.1(*),以及Scalar::Util,1

  3. 在CORE :: GLOBAL中哪些Perl内置函数不能被覆盖?

    解决方法toke.c中任何值为负的值都可以被覆盖;所有其他人可能不会.你可以看源码here.例如,我们来看看第10,396行的waitpid:由于waitpid为负数,因此可能会被覆盖.grep怎么样?这是积极的,所以不能被覆盖.这意味着以下关键字不能被覆盖:chop,defined,delete,do,dump,each,else,elsif,eval,exists,for,foreach,format,glob,goto,grep,if,keys,last,local,m,map,my,next,no

  4. 如何在Perl中打印由换行符分隔的列表元素?

    什么是最简单的打印所有列表的元素以Perl中的换行符分隔的元素?解决方法在Perl5.10中:其他方式:或:或者怎么样?

  5. 使用Perl如何获取文件大小(以兆字节为单位)?

    我想以磁盘的形式获取磁盘上的文件大小.使用-s运算符给出了以字节为单位的大小,但是我将假设,然后将其除以魔术数字是一个坏主意:我应该使用只读变量来定义1024,还是有一种编程方式来获取一千字节的字节数?

  6. perl – 如何测试/分类CPAN模块的utf8正确性

    例如:File::Slurp,如果你将读取该文件您将根据命令行开关获得不同的结果,并且perl-CSDA将无法正常工作.伤心.(是的,我知道比Encode::decode(“utf8”,read_file($file,binmode=>’:raw’));将帮助,但是SAD.我的问题:>在这里任何首选方式,如何测试/分类什么CPAN模块是utf8安全/准备/正确?>这里是像Perl::Criticforutf8这样的东西–什么将检查模块源可能的utf8不正确?总结以上是DEVMAX为你收集整理的perl–如

  7. 如何删除Perl字符串中的空格?

    如果我声明一个值为’3’的变量$myString.是否有任何功能来删除返回值的空格.有点像SomeFun然后返回’3′.输出:你可以注意到’vid’=>‘0’,上面的代码从theanswer.我正在研究它.总结以上是DEVMAX为你收集整理的如何删除Perl字符串中的空格?如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  8. 如何在mod_perl2下运行Devel :: Cover?

    Unfortunately,Devel::Coverdoesnotyetworkwiththreads.它也不适用于prefork.在startup.pl中使用,Devel::Cover问题perl5.8.9,Apache2.2.13.我的操作系统是FreeBSD,如果重要.同样的问题是reportedforwin32.更新:PerlTrace全部输出解决方法邪恶之源似乎是Apache::DBI.

  9. 如何使用Perl中的C类?

    我有一套用C写的课.从Perl脚本中调用它们的最佳方法是什么?

  10. perl – 在Emacs中以双模式更好的缩进

    我正在使用Emacs来修改Perl和Verilog交织的代码.我正在使用two-mode-mode在两者之间切换,这样可以预期.问题是perl代码与//一行一行地表示;如下图所示:而双模式则认识到它是Perl,它是逐行的,所以缩进等在线上无意义.我想做的是使Perl代码像往常一样格式化,但忽略//;字符.有什么想法吗?我刚刚开始偷看模式文件,它们是可以理解的复杂的,所以任何提示都不会感激!

返回
顶部