我正在尝试使用Apache CommonsFileUtils.lineIterator
逐行迭代1.2GB文件。但是,一旦LineIterator
调用hasNext()
我就会得到一个java.lang.OutOfMemoryError:Java堆空间
。我已经将1G
分配给java堆。
我在这里做错了什么?在读取了一些文档之后,LineIterator不是应该从文件系统中读取文件,而不是将其加载到内存中吗?
注意,代码是在Scala中:
val file = new java.io.File("data_export.dat")
val it = org.apache.commons.io.FileUtils.lineIterator(file, "UTF-8")
var successCount = 0L
var totalCount = 0L
try {
while ( {
it.hasNext()
}) {
try {
val legacy = parse[LegacyEvent](it.nextLine())
BehaviorEvent(legacy)
successCount += 1L
} catch {
case e: Exception => println("Parse error")
}
totalCount += 1
}
} finally {
it.close()
}
谢谢你的帮助!
代码看起来不错。可能它没有在文件中找到行尾,而是将大于1Gb的非常长的行读入内存。
尝试在Unix中使用wc-l,看看可以得到多少行。
假设N是根号,三者将创建N-1,N-2,N-3的左中右节点。 EX: 等。 我的 TreeNode 类具有以下变量: 每当我构造一个整数大于 28 的树时,我都会得到一个 OutOfMemoryError。我的递归方法是效率低下还是很自然?谢谢!
问题内容: 我在具有JVM参数的生产环境(rhel 5.2 x64,oracle jre 1.7_05,tomcat 7.0.28)上运行我的应用程序: 几次之后,我得到了这样的堆栈跟踪: 期待我的探查器-一切正常(用于堆和非堆的内存占10%),我不知道问题出在哪里。 该问题每天在同一时间发生,并且与应用程序正常运行时间无关。是什么原因引起的? 编辑: 日志文件中的新输出: 但是我有足够的内存:h
面向Web开发人员的Eclipse Java EE IDE。 版本:Juno Service Release 1 构建ID:20120920-0800 默认情况下,M2E不安装在此版本中,但它可以在标准更新站点中获得。 我试图在其中安装M2E,方法是查看Help-->install New Software,然后选择“Juno-http://download.eclipse.org/release
它需要做的是获取用户名和密码,验证它并根据密码给出适当的输出。请帮帮我.也让我知道如果我的怀疑是正确的。另外,我听说在servlet程序中编写html代码不是一个好的做法。我还想知道如何在index.html文件中编写上面的html代码,这应该与该程序预期的行为方式相同。谢了。
大约一到两周前,我就无法使用pip,因为它总是会回退以下错误: 错误:由于环境原因无法安装程序包错误:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):url超过最大重试次数:/packages/1b/e5/552ba6583ab43e12b299458fea94ee23886125b8b8babc91edb03f2ba65/p
编译以下使用Lombok自动生成getter和setter的类时,Checkstyle引发编译错误: 实用工具类不应具有公共或默认构造函数 当Checkstyle没有按照Checkstyle文档中指定的实用程序类定义时,为什么Checkstyle将上面的类归类为实用程序类?即只包含静态方法或字段的类。checkstyle解析的是默认源文本文件还是lombok生成的源文件?