posts - 14,  comments - 57,  trackbacks - 0
  在前面的文章里,我发布了修改版的boor到http://download.csdn.net/source/2578241 ,
支持中文pdf和中文txt,能正确显示中文目录。


问题

不过,有的朋友反映打开大的pdf文件时,容易死机。
这几天看了下,果然发现问题了。 为了加快读取pdf页面速度,bookr一开始就加载了所有的pageTree到内存中,
这样显示特定页面的时候,就无需查找该页面的PageObject了,这在PC机上一般没什么问题,PC机有虚拟内存,即使pdf文件很大,无非是加载pageTree慢点,
不过在PSP上就不行了,PSP的内存是有限的,而且没有虚拟内存,所以如果PageTree很大,那么很可能会导致内存不够,直接死机了。。。。


解决办法

解决办法其实也很简单,bookr启动的时候不加载PageTree,而是在每次显示的时候,从Root开始便利PageTree查询PageObject对象,任意一时刻,内存中只有一个PageObject对象。
这样就就基本解决了内存问题。下一个问题是查询效率的问题,这个问题其实不那么严重,PageTree本来就是一个树形结构,pdf的PageObject查询可以优化成一个树查询,这样应该会很快,实际编码测试,
根本感觉不到修改前后翻页速度有明显变化。
修改后用 金庸全集三联版.pdf(48.6M)测试OK。

下载

  1、下载http://download.csdn.net/source/2578241  
      解压到psp/game目录下。
  2、从http://www.cppblog.com/Files/feixuwu/EBOOT.rar 下载,解压后,覆盖原来bookr目录下的EBOOT.PBP文件即可。


posted on 2010-08-04 17:41 feixuwu 阅读(1961) 评论(2)  编辑 收藏 引用 所属分类: PSP开发

FeedBack:
# re: BOOR读pdf内存问题解决
2010-12-27 12:34 | DavidChiu
我下载了你的这两个版本,还是不能打开中文pdf文件,出现宕机的情况,打开中文txt文件也出现宕机的情况,我的是PSP 2000。

能否分享一下代码,让我研究一下?  回复  更多评论
  
# re: BOOR读pdf内存问题解决
2011-01-18 11:49 | feixuwu
@DavidChiu
如果是从CSDN那个链接下载的完整包,是可以打开的。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

文章转载请注明出处

常用链接

留言簿(11)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜