一般来说虚拟机会按照自己的调度来调用System.gc();方法,不需要你人工干预的。
Java的方法是跨平台的,所以UNIx下也可以用System.gc()方法

解决方案 »

  1.   

    多谢!
    本来是不打算人工清除内存的.
    现在是有一段子程序,每次运行时都要分配近200M的内存.我在运行时使用java -Xmx512M
    该子程序运行了1次.在第2次调用时java就崩了.
    我猜测,只有当java认为内存不足时才调用gc()来释放内存,前次运行时java认为内存还够,就没有释放它,所以只好手工来放了
      

  2.   

    可惜,你手工运行 gc,但 jvm并不一定按你说的来运行
    要知道,jmv运行垃圾回收,是它自己的事情
      

  3.   

    一般都是等快要暴了,jvm才知道要运行垃圾回收!
      

  4.   

    呵呵,Java的回收算法还是能忍受的啊,自己写多痛苦啊
      

  5.   

    一般都是等快要暴了,jvm才知道要运行垃圾回收!
    同意!!!
      

  6.   

    谁能说明一下那个java的回收算法吗?或者这样的算法产生的效果?
    to  zez(思恩 闭关练功ing...) 
    ====  可惜,你手工运行 gc,但 jvm并不一定按你说的来运行
    ====  要知道,jmv运行垃圾回收,是它自己的事情
    那么,为什么我连续几次调用gc(),最后会释放掉内存?是不是在调用gc()时,除了检查内存之外,java还做了别的什么?学java好久了,发现对它的内部机制还是不够了解啊 呵呵
    大家有什么好的看法 都提出来啊:)