iOS上的其他应用程序如何能够读写word文档?我看到了一些与此相关的其他问题,并且接受的答案是"无法完成".我不想只显示一个单词doc,我想阅读它的格式.其他应用程序是如何做到的,他们是否使用Microsoft发布的已发布标准自行编写解析?在处理文件之前,他们是否使用某种捆绑实用程序将文件转换为XML或HTML等其他格式?是否有开源方式这样做?寻找想法.
我正在运行一个包含10个线程的Perl服务器.它们永远不会在程序退出之前被销毁,但这是我打算尽可能多的正常运行时间,所以这就是为什么这对我来说是一个问题.线程多次处理一个简单的任务.当我启动服务器并启动所有线程时,我发现我有288.30 MB的空闲时间.经过每个线程的几次迭代后,它报告285.96 MB空闲.这并不是那么糟糕.可能只是在这些迭代过程中,一些堆栈空间被分配或者某些东西.但是15分钟后,可用内存下降到248.24 MB!我的记忆发生了什么?现在,有趣的是,它已达到稳定水平.它继续慢慢消耗,但不像最初那么快.
我在线程的每次迭代之后打印出可用空间,这样我就可以慢慢看到它.现在有趣的是它不会每次都减少.有时,迭代后空闲内存保持不变.
我正在使用从Linux 2.6上的源代码构建的Perl 5.8.8
有没有人有任何想法,甚至建议可能导致这种情况的原因是什么?我正在考虑将我的Perl升级到更高版本以排除Perl核心内部的内存泄漏.
更新:这可能是一个线程堆栈大小问题?我可以为堆栈分配比我需要的更多内存吗?当我创建我的线程时,我不会更改默认设置.我是不是该?线程doc说默认值通常为16MB,具体取决于系统.16x10线程= 160MB - >这可能是罪魁祸首.思考?
更新:我构建并安装了Perl 5.12.1并重建了模块和所有内容.已经运行了大约一个小时的脚本,这是我注意到的.内存使用现在可以管理,但并不理想.
还有其他想法吗?我可以试试吗?我已经无法解决所有变数了.
更新:我真的想继续使用glibc重新编译Perl作为最后的手段,因为我发现一些报告,在某些版本的Linux上会出现段错误.所以自从我上次发布以来,我进一步探讨了哈希中循环的可能性.一无所获.所以我花了最后几天分析我的子程序并缓存在另一次迭代中使用的任何东西.每次都会重新创建很多新东西,而Perl并没有清理所有内容,即使我明确地解决了这一切.所以如果它不合作,我就不会破坏它.将看看缓存我的对象是否有帮助.稍后会发布内存使用情况统计信息.
更新:嗯,非常奇怪.即使在缓存我的数据以便以后重用之后,内存也会以大致相同的速率上升.它现在开始更高,因为我正在缓存,但随后它继续上升,即使它主要是使用我的缓存对象.这令人费解.猜猜是时候尝试一下glibc ......否则这只是选择Perl的一个缺点,并且必须每隔几天重新启动一次服务器.
更新:尝试没有缓存,没有glibc,再次.工作正常一段时间,几个小时,然后它开始增长.只是想让你看到一个图表.
http://tinypic.com/r/311nc08/3
http://i32.tinypic.com/311nc08.jpg
更新:这是一个日志的摘录,记录每个线程在大约一分钟之前和之后的可用内存.也许这可以帮助别人更好地理解问题.它看起来有点稳定,然后每隔一段时间就会吃掉更多的内存.在这里,我失去了近40 MB!
[9:8:30, Fri Jul 23, 2010] [0] Memory usage at end thread 1: 253.812736MB (obj cache: 136)
[9:8:30, Fri Jul 23, 2010] [0] Memory usage at idle thread 1: 253.812736MB (obj cache: 136)
[9:8:34, Fri Jul 23, 2010] [204] Sending data to thread
[9:8:34, …Run Code Online (Sandbox Code Playgroud)