Redian新闻
>
OutofMemoryError: Java Heap Space
avatar
OutofMemoryError: Java Heap Space# Java - 爪哇娇娃
y*y
1
大家遇到这种问题怎么解决?
程序跑起来需要的heap空间比较大
都用了Xmx1440m了还出这种错误:(
我不明白为什么这个时候virtual memory不能起作用呢?
avatar
A*o
2
64bit or do your own paging

【在 y***y 的大作中提到】
: 大家遇到这种问题怎么解决?
: 程序跑起来需要的heap空间比较大
: 都用了Xmx1440m了还出这种错误:(
: 我不明白为什么这个时候virtual memory不能起作用呢?

avatar
b*y
3
Tricky issue. I think you just need to be careful to make sure the memory
usage is as small as possible...
avatar
i*k
4
首先要根据exception确定是哪一种 OOME。
常见的 OOME 根据HEAP区域有两类:PermGen 和 Heap。PermGen 类的OOME只会出现在
有permgen概念的JVM,比如HOTSPOT。BEA 的 JROCKIT 不会出现这种问题。
PermGen存放两种对象:Class object 和 interned String。大多数permGen OOME由前
者引起,根本原因是hotspot对 classloader 的 garbage collection 做的不是很好。
这种问题常出现于:1. 开发过程中反复deploy程序。2. 应用的high availability
strategy或者side-by-side deployment strategy 采用了抛弃classloader的设计。3.
病态JSP,TAG, EJB compiler。
PermGen OOME 是常见,well documented,但是普通人极难处理的问题。这类问题的根
源多数在于JVM, SERVER 和应用架构的弊病。其中应用架构问题,常见病因有:
1.误用Thre

【在 y***y 的大作中提到】
: 大家遇到这种问题怎么解决?
: 程序跑起来需要的heap空间比较大
: 都用了Xmx1440m了还出这种错误:(
: 我不明白为什么这个时候virtual memory不能起作用呢?

avatar
i*k
5
另外,1.5G对于大多数SERVER是足够了。这个具体要参考你的SERVER的厂商文档。
增加HEAP到2G以上,或者上64位JVM,至少在目前,几乎可以肯定不是正确答案。前者
在某些JVM/OS KERNEL 组合下不能用。后者即使能用,一般而言性能也比32位差。
JAVA 的 SCALABILITY STRATEGY 主要是横向。比如,一台机器上部署多个JVM构成
CLUSTER要比增加HEAP或者64位内存有效。

【在 y***y 的大作中提到】
: 大家遇到这种问题怎么解决?
: 程序跑起来需要的heap空间比较大
: 都用了Xmx1440m了还出这种错误:(
: 我不明白为什么这个时候virtual memory不能起作用呢?

avatar
F*n
6
The most likely reason is that you have a dead loop in your code.

【在 y***y 的大作中提到】
: 大家遇到这种问题怎么解决?
: 程序跑起来需要的heap空间比较大
: 都用了Xmx1440m了还出这种错误:(
: 我不明白为什么这个时候virtual memory不能起作用呢?

avatar
t*e
7

3.
Very informative!

【在 i****k 的大作中提到】
: 首先要根据exception确定是哪一种 OOME。
: 常见的 OOME 根据HEAP区域有两类:PermGen 和 Heap。PermGen 类的OOME只会出现在
: 有permgen概念的JVM,比如HOTSPOT。BEA 的 JROCKIT 不会出现这种问题。
: PermGen存放两种对象:Class object 和 interned String。大多数permGen OOME由前
: 者引起,根本原因是hotspot对 classloader 的 garbage collection 做的不是很好。
: 这种问题常出现于:1. 开发过程中反复deploy程序。2. 应用的high availability
: strategy或者side-by-side deployment strategy 采用了抛弃classloader的设计。3.
: 病态JSP,TAG, EJB compiler。
: PermGen OOME 是常见,well documented,但是普通人极难处理的问题。这类问题的根
: 源多数在于JVM, SERVER 和应用架构的弊病。其中应用架构问题,常见病因有:

avatar
i*k
8
Most server programs by definition are deal loops. That's what 24X7 means.

【在 F****n 的大作中提到】
: The most likely reason is that you have a dead loop in your code.
avatar
x*y
9
different solutions for different cases.
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。