rt~例如这样:
system.gc
for (int i=0;i<9;i++) {}

解决方案 »

  1.   

    我试过另一垃圾回收的条件“资源紧张”但直到内存耗尽,java还是没有回收垃圾~
      

  2.   

    你这样显示调用system.gc(),很耗资源的阿,jvm会把所有的当前线程全部挂起,转而来处理你的垃圾。
      

  3.   

    我试过另一垃圾回收的条件“资源紧张”但直到内存耗尽,java还是没有回收垃圾~
    --------------------------------------------------对象只有没有任何变量引用它的时候才被视为垃圾, 你确定你及时释放对象的引用了么?
      

  4.   

    没这个必要:
    少去管 Java的垃圾回收器;
    如果不用某个object的话就把 那个 reference 设置为 null就是了。
    这是我对 System.gc() 和 System.runFinalization() 的一个测试!
    --------------------------------
    http://community.csdn.net/Expert/topic/3930/3930352.xml?temp=.218197
    看看结果吧。。
      

  5.   

    完全靠Java的垃圾回收器来回收垃圾是不切实际的(因为它的垃圾回收速度较慢),关键是做程序的时候要尽量少的new对象,且new出来的对象要尽量重用才是上策!
      

  6.   

    "对象只有没有任何变量引用它的时候才被视为垃圾, 你确定你及时释放对象的引用了么?"==========有必要讲讲我的具体情况,我是用j2me在手机上运行我的程序,我定义了一个很大的数组,
    当都被赋值的时候,在j2me上显示内存已使用80%以上,我用完该数组后已经全部赋值为null,
    但我怎么调用system.gc()内存都无释放,最重要的是:我再对该数组重新赋值是,j2me显示内存溢出。
    所以我的问题是,在第二此对该数组赋值时,明显符合“资源紧张”的回收条件,但没反应,我现在
    只能冀望另已回收条件“系统空闲”了。请大家继续发表高见~
      

  7.   

    to: FBug(花知)
    我看了你的贴,我自己还未做实验,但我想讲一下在《sun认证java2程序员》P124原文对垃圾回收写道:
    “上述示例的问题和解答都使用了‘有可能启动’这样的说法,也就是说不能确定垃圾回收线程是否启动。那么能不能准确确定垃圾回收线程何时启动呢?回答是否定的,程序员无法强行命令垃圾回收线程启动。
      垃圾回收线程的启动由虚拟机的内嵌算法来进行调度,程序员无法直接调用它。它的运行只有两种情况:系统在运行过程中出于空闲状态和内存资源使用不足。”
      

  8.   

    在《sun认证java2程序员》P124原文对垃圾回收写道:
    “上述示例的问题和解答都使用了‘有可能启动’这样的说法”
    ----------------------------------------啊。真的是这样的吗?
    哈哈。 我不清楚的。不过我做的测试中系统不是及时的释放掉了么?(结果在那帖子的1楼)
    结果中System.runFinalization() 方法正和您 所说的符合;
    这是我对gc()的测试结果,供您参考;(哈哈。我不敢保证100%对)
      

  9.   

    我用完该数组后已经全部赋值为null,请直接把数组置为null就行了。回收器的运行视资源情况而定,我们的工作,只要直接把对象标记为 null就是了。