android测试环境是4.0
poi是最新的
word文件是97-2003
错误是:OutOfMemory
错误位置为下方红色字体处(此段代码在poi源码中):
DocumentEntry dataProps =
(DocumentEntry)directory.getEntry(STREAM_DATA);
_dataStream = new byte[dataProps.getSize()];
directory.createDocumentInputStream(STREAM_DATA).read(_dataStream);很明显是分配内存不足了。
我测试用的doc文件打开20多M,同样的程序和doc文件在另外一个性能好的机器上不会报错,运行正常。为了测试手机new 操作时 到底多少可以内存不足我写了一小段程序:
new Thread() {
public void run() {
try {
int bsize = 1024;
while (true) {
byte[] bytes = new byte[bsize]; bytes = null;
bsize += 102400;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
测试结果是,我的手机在30M多时报错了。另外那个性能比较好的手机在100多M时才报错1.我想知道poi打开doc时,doc文件过大 怎么处理?
2.如果不太好处理的话,怎么可以知道手机new操作时能分配的内存大小?
3.有一个olivephone-sdk的jar包,他好像也调用的poi,但是他没有上面的问题,不知道他是修改了poi还是我自己使用有问题求高手解答androidpoi内存
poi是最新的
word文件是97-2003
错误是:OutOfMemory
错误位置为下方红色字体处(此段代码在poi源码中):
DocumentEntry dataProps =
(DocumentEntry)directory.getEntry(STREAM_DATA);
_dataStream = new byte[dataProps.getSize()];
directory.createDocumentInputStream(STREAM_DATA).read(_dataStream);很明显是分配内存不足了。
我测试用的doc文件打开20多M,同样的程序和doc文件在另外一个性能好的机器上不会报错,运行正常。为了测试手机new 操作时 到底多少可以内存不足我写了一小段程序:
new Thread() {
public void run() {
try {
int bsize = 1024;
while (true) {
byte[] bytes = new byte[bsize]; bytes = null;
bsize += 102400;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
测试结果是,我的手机在30M多时报错了。另外那个性能比较好的手机在100多M时才报错1.我想知道poi打开doc时,doc文件过大 怎么处理?
2.如果不太好处理的话,怎么可以知道手机new操作时能分配的内存大小?
3.有一个olivephone-sdk的jar包,他好像也调用的poi,但是他没有上面的问题,不知道他是修改了poi还是我自己使用有问题求高手解答androidpoi内存
解决方案 »
- ListView的Item中有多个Button,上下滚屏后Button原有状态丢失
- 【救命啊】eclipse出错了,有截图、、
- android TCP/IP有没有人做过???
- 两个Activity之间怎么传递List<Map<String,Object>>型数据,谢谢
- 求安卓学习的教材
- 怎么获得下载程序的大小
- 怎样定位手机在一幢建筑物内的位置,几层以及平面方位?
- android实时录制视频发送,PC端或者android端如何来接收播放视频流?
- 急--(新人)创建项目时项目名出现感叹号,V7出现X
- 使用属性动画不停旋转图片的时候出现内存泄漏,跪求帮助该怎么解决!!!
- android动态布局时报内存溢出
- 怎么将图片处理成800x480
Runtime.getRuntime().maxMemory()这个是获得每个Application最大可使用内存
谢谢,不过这个最大值和new 操作能申请的内存数量还不太一样,new能得到的明显少了些不过这个最大值还是有些参考作用的,谢谢了