首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >java.lang.OutOfMemoryError: Java堆空间

java.lang.OutOfMemoryError: Java堆空间
EN

Stack Overflow用户
提问于 2014-09-04 19:17:05
回答 3查看 9.6K关注 0票数 2

我使用的是cassandra 2.0.8,并得到了这个异常

代码语言:javascript
代码运行次数:0
运行
复制
INFO 16:44:50,132 Initializing system.batchlog
 INFO 16:44:50,138 Initializing system.sstable_activity
 INFO 16:44:50,142 Opening /var/lib/cassandra/data/system/sstable_activity/system-sstable_activity-jb-10 (826 bytes)
 INFO 16:44:50,142 Opening /var/lib/cassandra/data/system/sstable_activity/system-sstable_activity-jb-9 (827 bytes)
 INFO 16:44:50,142 Opening /var/lib/cassandra/data/system/sstable_activity/system-sstable_activity-jb-11 (825 bytes)
 INFO 16:44:50,150 reading saved cache /var/lib/cassandra/saved_caches/system-sstable_activity-KeyCache-b.db
java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid3460.hprof ...
Heap dump file created [13378724 bytes in 0.071 secs]
ERROR 16:44:50,333 Exception encountered during startup
java.lang.OutOfMemoryError: Java heap space
    at java.util.ArrayList.<init>(ArrayList.java:144)
    at org.apache.cassandra.db.RowIndexEntry$Serializer.deserialize(RowIndexEntry.java:120)
    at org.apache.cassandra.service.CacheService$KeyCacheSerializer.deserialize(CacheService.java:365)
    at org.apache.cassandra.cache.AutoSavingCache.loadSaved(AutoSavingCache.java:119)
    at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:262)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:421)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:392)
    at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:309)
    at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:266)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:110)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:88)
    at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:536)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:261)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:496)
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:585)
java.lang.OutOfMemoryError: Java heap space
    at java.util.ArrayList.<init>(ArrayList.java:144)
    at org.apache.cassandra.db.RowIndexEntry$Serializer.deserialize(RowIndexEntry.java:120)
    at org.apache.cassandra.service.CacheService$KeyCacheSerializer.deserialize(CacheService.java:365)
    at org.apache.cassandra.cache.AutoSavingCache.loadSaved(AutoSavingCache.java:119)
    at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:262)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:421)
    at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:392)
    at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:309)
    at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:266)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:110)
    at org.apache.cassandra.db.Keyspace.open(Keyspace.java:88)
    at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:536)
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:261)
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:496)
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:585)
Exception encountered during startup: Java heap space

谁能告诉我原因和解决方案:

EN

回答 3

Stack Overflow用户

发布于 2014-09-04 19:25:28

找到cassandra/conf/cassandra-env.sh位置

查看当前可以分配给堆的最大1/2 RAM的堆大小

代码语言:javascript
代码运行次数:0
运行
复制
#MAX_HEAP_SIZE="4G" 
#HEAP_NEWSIZE="800M"

如果要更改当前的堆大小,请删除注释..

代码语言:javascript
代码运行次数:0
运行
复制
MAX_HEAP_SIZE="4G"
HEAP_NEWSIZE="800M"
票数 3
EN

Stack Overflow用户

发布于 2014-09-06 00:48:08

有可能你的密钥缓存占用了太多的空间(因为那是它死的地方),但这似乎不太可能。您可以尝试在启动之前删除KeyCache

代码语言:javascript
代码运行次数:0
运行
复制
/var/lib/cassandra/saved_caches

和set

代码语言:javascript
代码运行次数:0
运行
复制
key_cache_size_in_mb: 0

在您的cassandra.yaml中作为测试(我不建议永久这样做)禁用它。

实际上,您可以通过打开工具包或某个堆分析器中创建的java_pid3460.hprof文件来确定是什么在填满您的堆,以确定是什么在占用空间。可能有一些有趣的事情在发生,非常奇怪的是死于13mb左右(堆的大小)。

票数 3
EN

Stack Overflow用户

发布于 2015-11-24 03:54:16

删除usr/local/var/lib/cassandra/commitlog/中的所有日志文件并重新启动Cassandra。

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

https://stackoverflow.com/questions/25664128

复制
相关文章

相似问题

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