| « | Mar.2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | |
| 公告 |
| 暂无公告... |
| Blog信息 |
|
blog名称:天地无用 日志总数:55 评论数量:43 留言数量:1 访问次数:196757 建立时间:2008年4月17日 |

| |
|
[java基础]about java.lang.OutOfMemoryError (转) 软件技术
kkk888929 发表于 2008/7/25 9:54:05 |
|
今天同学在使用java时遇到这样的问题:
byte[] array = new byte[8000*8000] 将导致Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at ...
这是因为JVM的内存有限制,可以通过java -Xms64m -Xmx256m 【你的程序类名】的方法扩大JVM的内存容量,就不易出现这种错误了。
byte[][] array = new byte[8000][8000]; 不会报错我猜是因为二维数组只是分配了指针,还没有分配内存,若分配了内存也将会报错。
尽管可以手动分配内存,JVM还是有内存上限的 见 http://www.javaeye.com/topic/80257
通过这个错误的解决,我了解了JVM的一些设置方法,有用的链接如下:
JVM Tuning JVM内存的设置的原理 JVM内存参数调优Java虚拟机(JVM)参数配置说明
JVM调优总结 Tuning Java Virtual Machines java.lang.OutOfMemoryError学习笔记
附表 与JVM内存相关的参数及其说明 摘自JVM内存参数调优
JVM堆内存(heap)设置选项
参数格式
说 明
设置新对象生产堆内存(Setting the Newgeneration heap size)
-XX:NewSize
通过这个选项可以设置java新对象生产堆内存。在通常情况下这个选项的数值为1 024的整数倍并且大于1MB。这个值的取值规则为,一般情况下这个值-XX:NewSize是最大堆内存(maximum heap size)的四分之一。增加这个选项值的大小是为了增大较大数量的短生命周期对象增加java新对象生产堆内存相当于增加了处理器的数目。并且可以并行地分配内存,但是请注意内存的垃圾回收却是不可以并行处理的
JVM堆内存(heap)设置选项
参数格式
说 明
设置最大新对象生产堆内存(Setting the maximum New generation heap size)
-XX:MaxNewSize
通过这个选项可以设置最大java新对象生产堆内存。通常情况下这个选项的数值为1 024的整数倍并且大于1MB其功用与上面的设置新对象生产堆内存-XX:NewSize相同
设置新对象生产堆内存的比例(Setting New heap size ratios)
-XX:SurvivorRatio
新对象生产区域通常情况下被分为3个子区域:伊甸园,与两个残存对象空间,这两个空间的大小是相同的。通过用-XX:SurvivorRatio=X选项配置伊甸园与残存对象空间(Eden/survivor)的大小的比例。你可以试着将这个值设置为8,然后监控、观察垃圾回收的工作情况
设置堆内存池的最小值(Setting minimum heap size)
-Xms
通过这个选项可以要求系统为堆内存池分配内存空间的最小值。通常情况下这个选项的数值为1 024的整数倍并且大于1MB。这个值的取值规则为,一般情况下这个值(-Xms)与最大堆内存相同,以降低垃圾回收的频度
设置堆内存池的最大值(Setting maximum heap size)
-Xmx
通过这个选项可以要求系统为堆内存池分配内存空间的最大值。通常情况下这个选项的数值为1 024的整数倍并且大于1 MB一般情况下这个值(-Xmx)与最小堆内存(minimum heap size –Xms)相同,以降低垃圾回收的频度
取消垃圾回收
-Xnoclassgc
这个选项用来取消系统对特定类的垃圾回收。它可以防止当这个类的所有引用丢失之后,这个类仍被引用时不会再一次被重新装载,因此这个选项将增大系统堆内存的空间
设置栈内存的大小
-Xss
这个选项用来控制本地线程栈的大小,当这个选项被设置的较大(>2MB)时将会在很大程度上降低系统的性能。因此在设置这个值时应该格外小心,调整后要注意观察系统的性能,不断调整以期达到最优 |
|
|