16gb 似乎不足以在 Kotlin 中解析 1gb JSON,我可以优化我的代码吗?
16gb seems not enough to parse 1gb JSON in Kotlin, can I optimize my code?
我有一个 1gb json 文件,我想用 Kotlin 解析它。为此,我正在使用 jacksonObjectMapper。
val mapper = jacksonObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
val b : List<Profile> = mapper.readValue(File("$path/$inputFile2").readText())
Heap space 在 13gb 时不够用,所以我增加到 16gb(尽管我的 Windows 10 笔记本电脑只有 16gb RAM,所以我没想到它能工作)和 IntelliJ等待 15 分钟解析完成后不再有反应。不过,它不再在该设置中发出“堆不足 space”的警报..
我可以更改我的代码以使其在我的 16gb RAM 机器上运行吗?也许 运行 它作为 CMD 中的一个 jar?
一个1gb的文件能占那么多是不是很奇怪space?
感谢您的评论@fluidsonic。
json 是一个包含 400 000 个对象的列表。
我现在所做的是以某种方式组织 json 文件,使每一行包含 1 个对象。我当时正在做以下事情:
File("$path/$inputFile2").readLines().forEach {
val x: Profile = mapper.readValue(it)
// + logic
}
我相信这可以以不同的方式完成,但效果很好。
我有一个 1gb json 文件,我想用 Kotlin 解析它。为此,我正在使用 jacksonObjectMapper。
val mapper = jacksonObjectMapper().disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
val b : List<Profile> = mapper.readValue(File("$path/$inputFile2").readText())
Heap space 在 13gb 时不够用,所以我增加到 16gb(尽管我的 Windows 10 笔记本电脑只有 16gb RAM,所以我没想到它能工作)和 IntelliJ等待 15 分钟解析完成后不再有反应。不过,它不再在该设置中发出“堆不足 space”的警报..
我可以更改我的代码以使其在我的 16gb RAM 机器上运行吗?也许 运行 它作为 CMD 中的一个 jar?
一个1gb的文件能占那么多是不是很奇怪space?
感谢您的评论@fluidsonic。
json 是一个包含 400 000 个对象的列表。
我现在所做的是以某种方式组织 json 文件,使每一行包含 1 个对象。我当时正在做以下事情:
File("$path/$inputFile2").readLines().forEach {
val x: Profile = mapper.readValue(it)
// + logic
}
我相信这可以以不同的方式完成,但效果很好。