A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王小丑 中级黑马   /  2013-2-12 13:13  /  1115 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    大家都知道当Java程序开始运行时,JVM会从操作系统获取一些内存。JVM使用这些内存,这些内存的一部分就是堆内存。堆内存通常在存储地址的底层,向上排列。当一个对象通过new关键字或通过其他方式创建后,对象从堆中获得内存。当对象不再使用了,被当做垃圾回收掉后,这些内存又重新回到堆内存中。可是哪位高手可不可以告诉我如何增加Java堆空间?这个问题我私下里问过很多人,包括我大学的老师,可是他们给我的答案很模糊。比如在大多数32位机、Sun的JVM上,Java的堆空间默认的大小为128MB,但也有例外,例如在32未Solaris操作系统(SPARC平台版本)上,默认的最大堆空间和起始堆空间大小为 -Xms=3670K 和 -Xmx=64M。对于64位操作系统,一般堆空间大小增加约30%。但如果你使用Java 1.5的throughput垃圾回收器,默认最大的堆大小为物理内存的四分之一,而起始堆大小为物理内存的十六分之一!这个时候问题就来了,如果我的程序很大,有很多对象需要被创建的话,怎么才能增加Java堆空间而不是默认的值?
    这个问题困扰我很久了,求高手帮忙解决,最好说的详细些,或者给出可行的方法,多谢!

评分

参与人数 1黑马币 +40 收起 理由
杨志 + 40 新年送钱来了!

查看全部评分

1 个回复

倒序浏览
补充:例如,当运行中出现以下两种情况时,java.lang.OutOfMemoryError: Java heap space”。或者”java.lang.OutOfMemoryError: PermGen space”
前者表示堆没有足够的空间了,不能继续扩大  后者表示permanent generation已经装满了,你的程序不能再装在类或者再分配一个字符串了。如果出现这两种情况时,该如何解决?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马