16gb似乎不足以在Kotlin中解析1gb的JSON,我可以优化我的代码吗



我有一个1gb的json文件,我想在Kotlin中解析它。我使用的是jacksonObjectMapper。

val mapper = jacksonObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
val b : List<Profile> = mapper.readValue(File("$path/$inputFile2").readText())

堆空间在13gb时不够,所以我增加到16gb(尽管我的Windows 10笔记本电脑只有16gb RAM,所以我没想到这会起作用(,IntelliJ在等待15分钟解析完成后再也没有反应。它没有提醒";堆空间不足";不过,在那种环境下。。

我的代码中有什么可以更改的地方吗?让它在我的16gb RAM机器上运行?也许在CMD中将其作为jar运行?

1gb的文件会占用这么多空间,这不是很奇怪吗?

感谢您的评论@fluidsonic。

json是一个包含4000000个对象的列表。

我现在所做的是以这样一种方式组织json文件,即每行包含一个对象。当时我在做以下事情:

File("$path/$inputFile2").readLines().forEach { 
val x: Profile = mapper.readValue(it) 
// + logic 
}

我相信这本可以采取不同的做法,但它的效果很有魅力。

最新更新