SOS-javamail取下邮件后写入本地,内存溢出。。。

北柯一梦 发布于 2010/11/10 22:26
阅读 681
收藏 1

问题的根源是java写文件。

前一阵子做的一个javamail的项目,最近发现总是会有 java.lang.OutOfMemoryError: Java heap space 异常,

调试过JVM和resin的heap大小后还有会有问题,最后debug一下发现,原因是有些邮件超过30M,javamail在message

的writeTo(fos);方法会使内存溢出,即使flush();也会出现内存溢出。

javamail的message.writeTo(fos);没有提供多余的重载方法,只有把输出流全部放内存里一起写才行。

提供一个使用缓冲字节区来写该多好。。。。bos.write(b, 0, len);。。。。

太纠结了。。。。

加载中
0
北柯一梦
北柯一梦

我之前的这个项目是多线程的,同时会有多个大邮件的收取,若总是会有内存溢出可就惨了,难道使用javamail就实现不了,实在没办法也只能过滤掉大附件

0
z
zhangcctao

我也遇到这个问题呀。太多附件直接内存溢出了,怎么解决的

0
m
meitianhua

兄弟:

 向你请教问题:

1:我用javamail,pop3协议,把服务器上的邮件通过FileoutputStream保存到本地,以*.eml,来命名保存。双击,outlook可以直接打开,但是我是web项目。我如何在再解析后,可以现在到客户端呢?

2:兄弟,我是第一次做这个,或则你有没有什么好的思路提醒下?

3:我做一个web项目,预计通过POP3协议,把邮件都收到各自 用户 的文件中,相当于客户端。在再客户端吧邮件头和正文显现再客户端,问题是,客户端的邮件只是一个“文件”了,只能用FileInputStream去读取,那有如何去解析头部、正文、和附件呢?

4:如果用POP3.一直把邮件保存在服务器上,用户直接在服务器上读取邮件,请问用javamail,如何判断哪些邮件是已读的,哪些是未读的新邮件呢?(我希望用jamse作为邮件服务器,jamse暂不支持imap,现在新的jamse3.0M2文档上说是支持imap的,但是我一直没有正确跑起来,你要是有这方资料,给我一点,那就万分感谢了!!!)

0
北柯一梦
北柯一梦

引用来自#4楼“meitianhua”的帖子

兄弟:

 向你请教问题:

1:我用javamail,pop3协议,把服务器上的邮件通过FileoutputStream保存到本地,以*.eml,来命名保存。双击,outlook可以直接打开,但是我是web项目。我如何在再解析后,可以现在到客户端呢?

2:兄弟,我是第一次做这个,或则你有没有什么好的思路提醒下?

3:我做一个web项目,预计通过POP3协议,把邮件都收到各自 用户 的文件中,相当于客户端。在再客户端吧邮件头和正文显现再客户端,问题是,客户端的邮件只是一个“文件”了,只能用FileInputStream去读取,那有如何去解析头部、正文、和附件呢?

4:如果用POP3.一直把邮件保存在服务器上,用户直接在服务器上读取邮件,请问用javamail,如何判断哪些邮件是已读的,哪些是未读的新邮件呢?(我希望用jamse作为邮件服务器,jamse暂不支持imap,现在新的jamse3.0M2文档上说是支持imap的,但是我一直没有正确跑起来,你要是有这方资料,给我一点,那就万分感谢了!!!)

不好意思,最近忙,一直没看帖子,有事QQ我

qq:344964911

返回顶部
顶部