首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >堆空间OutOfMemoryError:可用与请求

堆空间OutOfMemoryError:可用与请求
EN

Stack Overflow用户
提问于 2019-03-09 11:37:07
回答 1查看 140关注 0票数 2

我有一个spark应用程序,它遇到了OutOfMemory Error.The GC日志如下。有没有一种方法可以告诉我请求了多少内存,以及在请求时有多少内存可用?谢谢!

代码语言:javascript
复制
3429.458: [Full GC (Allocation Failure) [PSYoungGen: 3495918K->3495908K(6990848K)] [ParOldGen: 2096
9872K->20969870K(20971520K)] 24465790K->24465778K(27962368K), [Metaspace: 56727K->56723K(1101824K)]
, 0.4597426 secs] [Times: user=0.90 sys=0.01, real=0.46 secs] 
#
# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill %p"
#   Executing /bin/sh -c "kill 16095"...
os::fork_and_exec failed: Cannot allocate memory (12)
3429.990: [Full GC (Ergonomics) [PSYoungGen: 3495936K->3495906K(6990848K)] [ParOldGen: 20969937K->20969933K(20971520K)] 24465873K->24465840K(27962368K), [Metaspace: 56723K->56723K(1101824K)], 5.4942216 secs] [Times: user=34.79 sys=0.58, real=5.50 secs] 
3435.485: [Full GC (Ergonomics) [PSYoungGen: 3495936K->3495907K(6990848K)] [ParOldGen: 20969933K->20969933K(20971520K)] 24465869K->24465840K(27962368K), [Metaspace: 56723K->56723K(1101824K)], 2.3213689 secs] [Times: user=14.01 sys=0.22, real=2.32 secs] 
3437.823: [Full GC (Ergonomics) [PSYoungGen: 3495936K->3495908K(6990848K)] [ParOldGen: 20970002K->20969998K(20971520K)] 24465938K->24465907K(27962368K), [Metaspace: 56723K->56723K(1101824K)], 0.4090566 secs] [Times: user=0.83 sys=0.01, real=0.40 secs] 
EN

回答 1

Stack Overflow用户

发布于 2019-03-09 12:09:32

有没有一种方法可以告诉我请求了多少内存

而不是根据所提供的信息。可能一点也不会。

和请求时有多少内存可用?

根据GC日志,这是内存耗尽的时候:

代码语言:javascript
复制
3429.458: [Full GC (Allocation Failure) 
           [PSYoungGen: 3495918K->3495908K(6990848K)] 
           [ParOldGen: 20969872K->20969870K(20971520K)] 
           24465790K->24465778K(27962368K), 
           [Metaspace: 56727K->56723K(1101824K)], 0.4597426 secs] 
          [Times: user=0.90 sys=0.01, real=0.46 secs] 

这行24465790K->24465778K(27962368K)代码是这样说的:

GC 24465790K

  • space之前使用的
  • 空间在GC之后使用的24465778K
  • heap空间27962368K

所以看起来3496590K是27962368K中的免费版本。

(其他三元组可以以相同的方式读取...)

看起来老一辈人已经满员了。我怀疑GC失败是由于GC无法保留eden空间中的对象。还要注意的是,无论是年轻一代的收集器还是老一代的收集器都没有设法释放太多的内存,完整的GC也没有。

因此,总体诊断是您的堆已满。由于某种原因,分配器无法将新对象放入伊甸园空间。它可能比eden中的可用空间大,也可能比大对象阈值大。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55073749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档