它似乎已经很快了,我只是想知道如果有人知道它是否使用NIO。我试图搜索整个NIO的源代码(好吧,它的搜索方式:)大声笑);但没有碰到任何东西。另外,如果它不使用NIO;你认为修改log4j以使用NIO也值得它更快吗?任何指针建议和链接到一些资源会很有帮助。log4j是否使用NIO将数据写入文件?
回答
此外,如果它不使用NIO;你 认为它值得修改 log4j使用NIO也使它更快 更快?
不,除非日志记录是应用程序活动的重要组成部分,在这种情况下通常会出现错误。
你似乎觉得NIO'更快',但这通常并不正确。只要尝试创建两个文件,一个使用标准IO,一个使用NIO,向他们写入一堆数据并关闭它们。你会看到性能几乎不同。 NIO只会在某些使用情况下表现更好;通常情况下很多连接。
查看FileAppender source。几乎只是标准java.io
。
在这种情况下,我看不出任何FileChannel比FileOutputStream更快的原因。
也许通过使用MappedByteBuffer?但在追加模式下,行为取决于操作系统。
最终,性能取决于您的硬盘驱动器,您的代码很重要。
是的,我只是在考虑MBB。这就是为什么我自己问这个问题!谢谢!记住这些要点。 – vpram86 2010-07-02 13:14:26
详细阐述了Confusion的答案,还有File NIO块。这就是为什么它不会比传统的文件IO在某些的情况下更快。引述O'Reilly's Java NIO book:
文件通道总是阻塞和不能被置于 非阻塞模式。现代操作系统具有复杂的缓存 和预取算法,通常会给本地磁盘I/O带来很低的延迟。网络文件系统通常具有较高的等待时间,但经常会受益于相同的优化。由于文件I/O具有根本不同的性质,面向流的I/O的非阻塞范例对于面向文件的操作没有多大意义。 对于文件I/O,真正的赢家是异步I/O,它允许 进程从操作系统 请求一个或多个I/O操作,但不会等待它们完成。过程在稍后通过 通知所请求的I/O已完成。异步I/O是 许多操作系统上不具备的高级功能。作为未来的NIO增强,正在考虑的 。
编辑:这样说,如果您使用File NIO和MappedByteBuffer,您可以获得更好的读/写效率。请注意,在Log4j 2中使用MappedByteBuffer在consideration之下。
哇很混乱,两年半后还是这样吗? – matanster 2016-06-10 09:05:11
- 1. 使用log4j 2写入数据文件或数据库表
- 2. 将log4j输出写入现有文件
- 3. log4j不将日志写入文件
- 4. log4j无法写入文件
- 5. log4j不写入文件
- 6. 使用Java nio编写文件元数据的问题
- 7. 将数据写入文件
- 8. 写的char []到文件使用NIO
- 9. Log4J - 确定记录器是否无法写入文件系统
- 10. 如何使用Log4j和Storm Framework将日志写入文件?
- 11. 如何关闭Java Nio文件写入
- 12. 用java将数据写入文件
- 13. 使用文件写入操作将5M数据写入csv文件
- 14. 使用nio读取文件并写入servlet
- 15. 是否可以使用Extjs4将数据写入JSON?
- 16. CreateFileMappingA是否写入文件?
- 17. 写入文本文件时是否需要清理POST数据?
- 18. 如何使用ANSI格式将数据写入文本文件
- 19. 使用BufferedWriter将数据从不同类写入文本文件
- 20. 如何使用JavaScript将数据写入文本文件
- 21. Log4J 2 XML配置不写入文件
- 22. log4j-Logger未写入日志文件
- 23. log4j库没有写入文件
- 24. 记录器不写入文件Log4J
- 25. 使用文件和文件系统:在NIO之前,将来使用NIO和将来使用NIO2
- 26. 将数据写入本地JSON文件
- 27. 如何将数据写入.SLK文件
- 28. 将数据写入到文件
- 29. 将数据集写入xml文件
- 30. 将RTP流数据写入文件
是的;这些是在一种模式下应用程序的重要组成部分,我希望该模式也可以更好地执行,我从一个应用程序写入,所以我不知道如何在这里关联连接。尝试编写日志记录的线程数量是多少?是的,有很多线程试图写入内容。我知道从应用程序写入大量日志并不是最好的解决方案,但我只是想确保它不是最坏的:)也是。非常感谢您的见解。我会尝试将IO和NIO与一些例子进行比较。 – vpram86 2010-07-01 07:18:14