永发信息网

java垃圾回收的速度是如何的?是否受操作系统影响?

答案:3  悬赏:70  手机版
解决时间 2021-02-08 14:54
jre1.4在一个IE控件中,一个while中循环读取一个文件到内存,每次读取5m且读取后立刻释放,在相同硬件(3.2g/4g内存)环境下winXp和win2k下无论每次读取多少到内存都不会有问题,但在vista和win2008下每次读取超过5m则会在累积20m以后内存溢出。请高手解释一下,或给出解决方案

to rffffffff007:我的环境中不是vista自带的jre,而是jre1.4.1_01 windows i586版本。
to daay1986:并非手动垃圾回收,而是通过将保存读取文件的字节数组变量置空。
这些不能解释为什么相同的程序在winxp和win2k系统下运行没有问题。

to rffffffff007:我的是在客户端运行的一个控件,不可能去设置java初始内存的。
最佳答案
java回收垃圾是他的弱点,启动没有规律可循,只能靠你自己尽量的优化算法了。你这个问题可能是本身系统分配给java的内存不够造成的。而且你说的释放内存如果是手动启动垃圾回收的话,本身启动垃圾回收会花费双倍的内存空间。只会让内存更吃紧,手动启动垃圾回收不是值的推荐的方法。另外读写文件还有个资源的释放问题。
全部回答
是垃圾 就会回收 不确定是什么时间 gcstring s = new gcstring("s"); 如果变量出了作用域,就是垃圾 变量名 失去 指向就会变成垃圾 而对象失去变量名的指向 同样变成垃圾 比如匿名对象 本身就是垃圾
vista自带jre。也许是这个问题。 如果保证在同样的jre环境下。并且为程序分配同样大小的内存限制。是不可能出线这个情况的啊。java几乎不依赖系统。 java的垃圾回收不是即时的。但是似乎在接近程序的内存限制的时候会立刻回收。 使用 java -Xms -Xmx 重新设置相同的初始、最大内存试试看吧 以我的能力无解了。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
CAD,ug.proe.mastercam 的区别哪个最好?
东渠村地址在什么地方,想过去办事
【西洋弹拨乐器】中华民族的拉弦乐器,弹拨乐
rays轮毂g27多少钱?
寺后窑村地址在什么地方,我要处理点事
学龄前儿童行为可塑性很强,被称做A.造型时期
甘泉村地址在哪,我要去那里办事
南阳村怎么去啊,我要去那办事
黑猫美发设计室我想知道这个在什么地方
wow魔兽世界7.0竞技场痛苦术士PVP怎么打
永宁村地址好找么,我有些事要过去
猿人时代分别有什么发明物和它们的制造方法
夕阳谁唤下楼梯,一握香夷,回头忍笑阶前立,
宏泰大药房地址在什么地方,想过去办事
下列行为属于珍爱生命健康权的是:A. 一台湾
推荐资讯
银泰水晶地址有知道的么?有点事想过去
优壹家装饰在什么地方啊,我要过去处理事情
海洋公园在哪里啊,我有事要去这个地方
turbo c 3.0中显示错误:function 'prin
小时光咖啡馆(川桥店)地址有知道的么?有点事
齐鲁制药最新药?
仙居疾病预防控制中心门诊部在哪里啊,我有事
童颜养生馆地址好找么,我有些事要过去
我国外汇管理局所属分支机构自用的房产( )。A
求助:开博尔C3如何复位?
浙江金华东阳蓝天白云高尔夫场地址好找么,我
冰箱颜色为什么银灰色居多
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?