一个JAVA程序占多大内存??

number321 2008-10-01 09:33:57
thinking in java第三版中文版里面有一句话:
"如果JVM并未面临内存耗尽的情形,它是不会浪费时间在回收垃圾及恢复内存上的"

那么一个程序不是基本上要在它结束时才会释放掉它所开辟的所有内存空间吗,即使有些只是临时用一下,之后就不用了,也还是留在那里,如果程序中经常有这样的动作,不是会很占内存?
大家都这样的话,不是很容易让总内存处于一个不够用的状态?

JVM对这种情况是怎么处理的呢???
...全文
132 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤尽JavaSea 2008-10-01
  • 打赏
  • 举报
回复
JVM: 堆上的内存+栈的内存+静态数据区.
number321 2008-10-01
  • 打赏
  • 举报
回复
- -! 厉害
ZangXT 2008-10-01
  • 打赏
  • 举报
回复
ZangXT 2008-10-01
  • 打赏
  • 举报
回复
Inside the Java Virtual Machine
第九章有介绍.
number321 2008-10-01
  • 打赏
  • 举报
回复
我也觉得应该有,不过不知道是不是这样,哪里有文章说这一方面的呢
ZangXT 2008-10-01
  • 打赏
  • 举报
回复
jvm应该也有一个域值吧,当可用内存小于这个域值的时候回收.
我们能做的就是确定某个引用不会再用了,就置为null
ZangXT 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 Java_gannbare 的回复:]
JVM: 堆上的内存+栈的内存+静态数据区.
[/Quote]
又冒出一个静态数据区了,晕
number321 2008-10-01
  • 打赏
  • 举报
回复
又试了一下
class Test
{
public void finalize()
{
System.out.println("finalize");
}
}
public class EclpiseTest {

public static void main(String[] args) {
Test a=new Test();
a=null;
// System.gc();
while(true)
{
int m[]=new int[80000];
}
}
}

这里int[80000]会有垃圾回收,int[70000]没有,大概在这个值之间

62,612

社区成员

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

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