可否人为制造空闲变相令java执行垃圾回收先~ rt~例如这样:system.gcfor (int i=0;i<9;i++) {} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我试过另一垃圾回收的条件“资源紧张”但直到内存耗尽,java还是没有回收垃圾~ 你这样显示调用system.gc(),很耗资源的阿,jvm会把所有的当前线程全部挂起,转而来处理你的垃圾。 我试过另一垃圾回收的条件“资源紧张”但直到内存耗尽,java还是没有回收垃圾~--------------------------------------------------对象只有没有任何变量引用它的时候才被视为垃圾, 你确定你及时释放对象的引用了么? 没这个必要:少去管 Java的垃圾回收器;如果不用某个object的话就把 那个 reference 设置为 null就是了。这是我对 System.gc() 和 System.runFinalization() 的一个测试!--------------------------------http://community.csdn.net/Expert/topic/3930/3930352.xml?temp=.218197看看结果吧。。 完全靠Java的垃圾回收器来回收垃圾是不切实际的(因为它的垃圾回收速度较慢),关键是做程序的时候要尽量少的new对象,且new出来的对象要尽量重用才是上策! "对象只有没有任何变量引用它的时候才被视为垃圾, 你确定你及时释放对象的引用了么?"==========有必要讲讲我的具体情况,我是用j2me在手机上运行我的程序,我定义了一个很大的数组,当都被赋值的时候,在j2me上显示内存已使用80%以上,我用完该数组后已经全部赋值为null,但我怎么调用system.gc()内存都无释放,最重要的是:我再对该数组重新赋值是,j2me显示内存溢出。所以我的问题是,在第二此对该数组赋值时,明显符合“资源紧张”的回收条件,但没反应,我现在只能冀望另已回收条件“系统空闲”了。请大家继续发表高见~ to: FBug(花知)我看了你的贴,我自己还未做实验,但我想讲一下在《sun认证java2程序员》P124原文对垃圾回收写道:“上述示例的问题和解答都使用了‘有可能启动’这样的说法,也就是说不能确定垃圾回收线程是否启动。那么能不能准确确定垃圾回收线程何时启动呢?回答是否定的,程序员无法强行命令垃圾回收线程启动。 垃圾回收线程的启动由虚拟机的内嵌算法来进行调度,程序员无法直接调用它。它的运行只有两种情况:系统在运行过程中出于空闲状态和内存资源使用不足。” 在《sun认证java2程序员》P124原文对垃圾回收写道:“上述示例的问题和解答都使用了‘有可能启动’这样的说法”----------------------------------------啊。真的是这样的吗?哈哈。 我不清楚的。不过我做的测试中系统不是及时的释放掉了么?(结果在那帖子的1楼)结果中System.runFinalization() 方法正和您 所说的符合;这是我对gc()的测试结果,供您参考;(哈哈。我不敢保证100%对) 我用完该数组后已经全部赋值为null,请直接把数组置为null就行了。回收器的运行视资源情况而定,我们的工作,只要直接把对象标记为 null就是了。 关于Java创建对象内存分配的问题 有点小疑惑,帮忙看一下 java中如何点击一个按钮就可以调用另外一个窗体 笔试一道重载题疑问 各位大虾,从DELPHI转JAVA要先学什么东东? 请问不使用Jdbc,且不下载任务驱动。,是否可以直接用Jsp链接Access 关于Java类之间的访问??? 要将byte数组的内容用string输出,该怎么做? java socket客户端上传文件过程中断线,客户端重连,并且服务端继续接收数据 如何判断一个字符串是否在 orale long 类型的字段中??请指教 关于HashMap中value的问题 诚心听取过来人的经验之谈
--------------------------------------------------对象只有没有任何变量引用它的时候才被视为垃圾, 你确定你及时释放对象的引用了么?
少去管 Java的垃圾回收器;
如果不用某个object的话就把 那个 reference 设置为 null就是了。
这是我对 System.gc() 和 System.runFinalization() 的一个测试!
--------------------------------
http://community.csdn.net/Expert/topic/3930/3930352.xml?temp=.218197
看看结果吧。。
当都被赋值的时候,在j2me上显示内存已使用80%以上,我用完该数组后已经全部赋值为null,
但我怎么调用system.gc()内存都无释放,最重要的是:我再对该数组重新赋值是,j2me显示内存溢出。
所以我的问题是,在第二此对该数组赋值时,明显符合“资源紧张”的回收条件,但没反应,我现在
只能冀望另已回收条件“系统空闲”了。请大家继续发表高见~
我看了你的贴,我自己还未做实验,但我想讲一下在《sun认证java2程序员》P124原文对垃圾回收写道:
“上述示例的问题和解答都使用了‘有可能启动’这样的说法,也就是说不能确定垃圾回收线程是否启动。那么能不能准确确定垃圾回收线程何时启动呢?回答是否定的,程序员无法强行命令垃圾回收线程启动。
垃圾回收线程的启动由虚拟机的内嵌算法来进行调度,程序员无法直接调用它。它的运行只有两种情况:系统在运行过程中出于空闲状态和内存资源使用不足。”
“上述示例的问题和解答都使用了‘有可能启动’这样的说法”
----------------------------------------啊。真的是这样的吗?
哈哈。 我不清楚的。不过我做的测试中系统不是及时的释放掉了么?(结果在那帖子的1楼)
结果中System.runFinalization() 方法正和您 所说的符合;
这是我对gc()的测试结果,供您参考;(哈哈。我不敢保证100%对)