Java的垃圾收集的问题(60分)

enjoyu 2003-03-19 10:33:07
1.如何强迫虚拟机立即进行垃圾收集?好象用System.gc();也是不行的。而且是进行彻底的回收,因为我用optimizeit profiler看到垃圾回收时它不彻底,虚拟机回收到一定程度就不回收了,而此时用optimizeit profiler进行回收时还可以回收很多。

2.当虚拟机检查到分配的堆栈快不够用时,它才进行垃圾的回收,可此时虚拟机往往要扩大总的堆栈的大小(因为回收时它需要内存),这样分配的总堆栈大小就会增加,而且如此反复,总堆栈不断增大,而且虚拟机总是在分配的堆栈快用完的时候再进行垃圾回收,最后,内存溢出异常。 请问有没有啥办法让虚拟机在内存不是快用完时回收,而是在差一定数量时回收?(这个问题其实和第一个问题差不多)。

3. 如果我有一个方法,在里面new了一个panel,这个panel里又包容了另外的一些组件,如button, scrollpanel等等。 当我不断的调用该方法时,请问以前new的panel可以被回收吗?当然,已经没有任何的引用指向该panel了。 还有,这个panel包容的另外的组件会被回收吗(因为我用optimizeit看,好象是不会被回收的)?
...全文
57 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hht 2003-03-20
  • 打赏
  • 举报
回复
这个不好说的,如果你的程序写得够漂亮,是不会出现内存溢出的,因为毕竟你用到的就那么多东西,但是如果写得有问题,很容易出现memory leak,你既然有测试工具,可以查看回收之前和之后的对象数量有什么变化,如果一直增加而你的设计却不是这样,那可以肯定出现了内存漏洞,就得从设计上找问题了,唉,一个字,累。

62,615

社区成员

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

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