请问该如何解决applet中读取大文件时内存溢出?

cql0007 2006-06-27 03:04:08
要读的文件80多M,如果是APPLICATION的程序,可以用java -Xmx1024m来增大JVM内存,这个程序在APPLICATION时跑起来正常,但在APPLET时不知如何设置这个参数?

而且,如果是要在客户端进行设置的话,那岂不是每个客户端都要进行参数设置,这样的话也没有解决意义了,不可能要求每个客户端都进行这个设置的了

如果改用分批次读文件,一次读一部分,处理完再销毁再读另外一部分这种方式的话,我的程序就改动量太大了,希望能有办法直接加大JVM的内存这种解决方式的

谢过先了。
...全文
830 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyan0413 2006-07-11
  • 打赏
  • 举报
回复
我认为分次读取是最经典的方法,其他方法都不太好
maquan 2006-07-04
  • 打赏
  • 举报
回复
其实,我的意思并不是把原来 JAVA 做的东西都一直成 ActiveX 的形式,而是用 ActiveX 做一个“药引子”,到客户机里替你去做“修改配置”的工作,比如“修改 Java Plug-in 的内存限额”等。(不过,具体到怎么用程序修改 Java Plug-in 的配置参数我也没有经验:)
cql0007 2006-07-03
  • 打赏
  • 举报
回复
确实是在局域网内使用的了

做ActiveX的话,不能把JAVA的东西直接做成ActiveX啊,换别的语言重写那又是很大的工作了
pkkquan 2006-07-02
  • 打赏
  • 举报
回复
编程乐园 Netbeans 群 : 17737684
maquan 2006-07-02
  • 打赏
  • 举报
回复
applet 运行的时候要从服务器上读 80M 的文件?!这个太夸张了吧?也只有局域网上才可以考虑了……

如果一定要在客户端上做手脚,又不想麻烦用户自己去做设置的话,不妨做一个 ActiveX 插件埋到页面里,只要客户机接受了这个插件,那,一切都归你了,hehe,不过,这个办法好像有点霸道……
cql0007 2006-06-30
  • 打赏
  • 举报
回复
多谢楼上几位老兄,惭愧,确实是我把runtime里JVM的参数设的太大了才导致出错的。我设小点了现在是可以在APPLET中跑起来了

(TO楼上:我读的文件是服务端的文件)

不过这样的做法还是不实用啊,真正使用的时候不可能让客户每台机并且每次重装JRE后都去设这个参数的了

另外,TO ChDw(米) ( ) 信誉:155
你说的用webStart是个好提议,我也挺喜欢那种方式的,不过我没有用它做过实际的项目,我这个APPLET很多地方要与WEB交互的,很多地方要JS与APPLET互访的,不知道用webStart能否实现这点了?

继续期待高手的解决方案了
cql0007 2006-06-29
  • 打赏
  • 举报
回复
我试过三四台机了,在
java 小应用程序 RunTime 设置,再修改JRE的javaruntime参数,加上-Xmx1024m这句,全部都显示内存为只读的错误,然后IE死掉

看来用这个方法应应急在本机上显示都现问题啊

期待哪位高手帮我解决这问题啊
xzwsun 2006-06-29
  • 打赏
  • 举报
回复
我估计是你设置太大了,导致它启动不成功。你可以减少一点再看看
ChDw(米)

分析的有道理,把值设为小一点,适可而止!
GlandJacky 2006-06-29
  • 打赏
  • 举报
回复
作了这么长时间的Java开发,applet还没有接触过,惭愧~
听听高手们的建议,同时接分ing...
ChDw 2006-06-29
  • 打赏
  • 举报
回复
其实老实说,你这样还不如弄个Java Web Start的程序来,这样还不用受IE理会
autumn200005 2006-06-29
  • 打赏
  • 举报
回复
帮顶
ChDw 2006-06-29
  • 打赏
  • 举报
回复
那个方法我也用过,在plug-in的控制面板里的runtime参数里输入那个Xmx的值,但我这里一直一设完之后,打开IE就出现什么内存为只读的错误,无法正常运行。

-----


我估计是你设置太大了,导致它启动不成功。你可以减少一点再看看
maquan 2006-06-29
  • 打赏
  • 举报
回复
对不起,我收回刚才的问题。 :(

(CSDN 要是有删贴的功能就好了)
maquan 2006-06-29
  • 打赏
  • 举报
回复
哦,对了,忘了问楼主了,你的 applet 访问的是客户机硬盘上的文件吗?如果不修改安全策略的话,好像做不到吧?
maquan 2006-06-29
  • 打赏
  • 举报
回复
我看这个问题可不可以这么去理解:

applet 是运行在“沙箱”中的,沙箱存在的目的,就是为了保障客户机的安全,也就是要确保 applet 程序不会无限制地访问客户机的资源。

这么看,恐怕不存在什么办法能在无外界干预的情况下由 applet 程序自己作主增大其可用的内存容量,除非你能找到 Java Plug-in 的 BUG。
Voxer 2006-06-28
  • 打赏
  • 举报
回复
打开控制面板
双击java那个图标
出现一个Java控制面板
再进入Java->java 小应用程序 RunTime 设置,再修改JRE的javaruntime参数,也就是把-Xmx1024m加进去就行了
cql0007 2006-06-28
  • 打赏
  • 举报
回复
谢过cxp108(chen) 了,你说的是也有道理

但很多时候都有特殊的情况了,例如很多图片处理软件就是将图片文件一次性装入内存的,遇到图片超级大的时候,有很多图形处理软件也是有打不开的情况了

另外,我这个贴子不想讨论一次性读入文件的这种操作方式的合理不合理了

我就想弄明白在APPLET中怎么样找到办法增大它的JVM的内存,事实上,一个30M的文件就会让APPLET内存溢出,我现在就是不相信JAVA会解决不了这个问题,不然它也显的太弱了吧,期待哪位老兄提出解决方法了
cxp108 2006-06-28
  • 打赏
  • 举报
回复
将文件一次性全部读入内存中本来就是一种极其危险和蹩脚的操作,应该立刻给予纠正才对
否则以后如果程序扩大3倍,文件也跟着扩大3倍,等到那个时候你再改?
cql0007 2006-06-28
  • 打赏
  • 举报
回复
各位兄弟帮顶啊
cql0007 2006-06-28
  • 打赏
  • 举报
回复
谢过楼上的。

那个方法我也用过,在plug-in的控制面板里的runtime参数里输入那个Xmx的值,但我这里一直一设完之后,打开IE就出现什么内存为只读的错误,无法正常运行。

没找别的机器试过,不知是我的机器原因还是什么别的,但用这个方法要更改客户端的设置了,即使这个方法能解决也没有实际意义了,我不可能要求每个客户端都做这种设置啊
加载更多回复(7)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧