【问题标题】:Issue with FileWriterFileWriter 的问题
【发布时间】:2011-10-16 14:28:27
【问题描述】:

我正在热点虚拟机中的 Windows 2008 服务器(64 位)上运行我的 java 应用程序。

几个月前,我创建了一个工具来帮助检测我的应用程序中的死锁。在过去一个月左右的时间里,唯一给我带来任何问题的就是写入文本文件。

主线程似乎总是卡在下一行,我假设一次几乎是 5 秒。几秒钟后,应用程序继续正常运行且没有问题:

PrintWriter writer = new PrintWriter(new FileWriter(PATH + name + ".txt"));

不确定是什么原因造成的,但如果您能深入了解该问题,我们将不胜感激。我正在编写的文件很小,这不太可能是问题(除非有人有任何异议)。

如果您需要更多信息,请告诉我。

【问题讨论】:

  • 哪一部分需要时间,new FileWriter 还是 new PrintWriter
  • 你使用的是哪个版本的JDK?
  • 那么问题出在构造函数上,下面的写操作可以吗?
  • 哇,没有看到快速回复!问题在于构造函数本身。我曾经使用过 FileWriter,所以它实际上可能与此有关。我们通常是 JDK 7,但以前存在问题,我认为是 JDK 6_26(或类似的东西)
  • 你知道是 PrintWriter 还是 FileWriter 构造函数失败了吗?

标签: java file-io io filewriter


【解决方案1】:

当您的文件系统过载时,即使是最简单的任务也会出现延迟。例如如果我创建一个大文件(数 GB)并尝试进行一个未缓存的简单磁盘访问,它可能会等待几秒钟。

我会检查您的磁盘写入缓存是否已打开,并且您的磁盘大部分时间都处于空闲状态。 ;)

【讨论】:

    【解决方案2】:

    PATH 是否在网络驱动器上?您几乎可以看到写入网络文件系统的任何延迟。对应用程序执行此操作通常是一个非常糟糕的主意。他们通常应该在本地写入所有文件,然后以某种方式将事务发布到服务器。

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-12-30
      • 2011-05-21
      • 2014-05-18
      • 2017-03-21
      • 2013-07-27
      • 1970-01-01
      相关资源
      最近更新 更多