[英]Creating a temp file is incredibly slow
致电的任何理由
File.createTempFile("prefix", ".suffix", new File("C:\\");
可能需要40-50秒才能完成?
更新:我敲了一些测试工具,以测试在C:\\和默认tmp文件夹上创建100个测试文件为基准。 与仅将其保留为默认值相比,指定“ C:\\”始终要慢0.9ms,从而允许JVM预热时间,GC暂停等。(不知道为什么会这样,但这不是问题。)
一次运行都不会遇到类似延迟的情况,这表明该应用程序首先执行了其他操作,从而导致了问题。
使用Suns JVM 1.6.0_12客户端。
前段时间,在开发基于Swing的应用程序时,我遇到了JVM中的一个错误,如果您的桌面上有一个大的zip文件,它将导致文件请求器的打开速度非常慢。 当文件夹中存在大量文件时,还存在另一个相关问题。
可能与您的问题有关。 您使用哪个版本的JDK?
请查看此线程以获取一些信息:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4638397
http://groups.google.com/group/comp.lang.java.help/browse_thread/thread/ec8854f82f381123
对磁盘进行碎片整理也是一个好主意。
试试吧:
try {
// Create temp file.
File temp = File.createTempFile("pattern", ".suffix");
// Delete temp file when program exits.
temp.deleteOnExit();
// Write to temp file
BufferedWriter out = new BufferedWriter(new FileWriter(temp));
out.write("aString");
out.close();
} catch (IOException e) {
}
我已经看到Windows上的文件删除需要花费一分钟的时间,但是文件创建却没有。 我会检查一下,以确保您最近进行了碎片整理,并且您家中的文件数量也足够合理 。 一旦获得了超过1,000个文件(包括隐藏文件),Windows就会非常困难。
如果不指定c:\\
并允许Java将文件放置在默认位置,会发生什么?
病毒检查程序有时会使文件系统访问变慢,尤其是在Windows系统上。 它们会拦截对文件系统的所有访问,并且可以在允许应用程序从磁盘写入或读取之前进行大量处理。
我会检查并禁用任何病毒检查软件,看看是否有帮助。
如果其他建议没有帮助(禁用病毒扫描程序并检查间谍软件),则建议您获取JDK源代码并运行IDE的调试器,以查看在createTempFile()
期间它“挂在哪里”。
FWIW,我最终不得不运行磁盘清理 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.