首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scala的Jerkson解析器。

scala的Jerkson解析器。
EN

Stack Overflow用户
提问于 2013-11-11 20:27:53
回答 2查看 663关注 0票数 1

我使用Jerkson for scala,将对象列表序列化为JSON文件。我能够将对象分解为JSON格式的对象并写入文件。现在,当我想要将它读入我的程序以便进一步处理时,我会得到这个错误。FYI,我的文件大小是500 my,将来可能会增加到1GB。

我看到几个论坛要求增加XX:MaxPermSize=256M.我不确定这是否能解决我的问题,即使是现在,当我的JSON文件的大小增加到1GB.Is时,还有什么更好的选择可以保证这一点不会出现呢?谢谢!

代码语言:javascript
复制
Exception in thread "main" java.lang.OutOfMemoryError: PermGen space
    at java.lang.String.intern(Native Method)
    at org.codehaus.jackson.util.InternCache.intern(InternCache.java:41)
    at org.codehaus.jackson.sym.CharsToNameCanonicalizer.findSymbol(CharsToNameCanonicalizer.java:506)
    at org.codehaus.jackson.impl.ReaderBasedParser._parseFieldName(ReaderBasedParser.java:997)
    at org.codehaus.jackson.impl.ReaderBasedParser.nextToken(ReaderBasedParser.java:418)
    at com.codahale.jerkson.deser.ImmutableMapDeserializer.deserialize(ImmutableMapDeserializer.scala:32)
    at com.codahale.jerkson.deser.ImmutableMapDeserializer.deserialize(ImmutableMapDeserializer.scala:11)
    at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2704)
    at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1315)
    at com.codahale.jerkson.Parser$class.parse(Parser.scala:83)
    at com.codahale.jerkson.Json$.parse(Json.scala:6)
    at com.codahale.jerkson.Parser$class.parse(Parser.scala:14)
    at com.codahale.jerkson.Json$.parse(Json.scala:6)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-11 20:57:05

从堆栈跟踪中可以看到,Jackson实习生的字符串被解析为文档中字段的名称。当一个字符串被嵌入时,它会被放入PermGen中,这是堆中正在耗尽的部分。我认为这是因为您的文档有许多不同的字段名--也许是用某种命名方案生成的?不管是什么情况,增加您的MaxPermSize可能会帮助一些人,或者至少延迟问题,但是它不会完全解决问题。

另一方面,禁用杰克逊的字符串实习应该能完全解决这一问题。Jackson FAQ有更多关于要调整的配置选项的信息:intern.28.29ing

票数 3
EN

Stack Overflow用户

发布于 2013-11-11 20:42:31

增加记忆只会治疗症状而不是治愈疾病。我想说的是,这个Jerkson内存问题是一个幸事,它暴露了一个基本的设计缺陷。

至于您是如何治愈这种疾病的,我不能肯定,因为我对您的应用程序或用例一无所知。我很确定你一次不需要1GB的信息。考虑将JSON文件以流方式读取到数据库或缓存中,然后只获取解决特定问题所需的内容。

模糊的,我知道,但如果没有更多的细节,我就不能提供细节。底线是流和持久化。

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

https://stackoverflow.com/questions/19915293

复制
相关文章

相似问题

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