java - 写入太多日志会导致 OutOfMemory 错误吗?

标签 java log4j slf4j

我使用Java,并使用sl4j/log4j进行日志记录。出于好奇,我想知道写太多日志是否会导致Java OutOfMemory错误?

这里什么太多了? 嗯,说 10 分钟内 100 mb 的日志,同时进行过多的数据库操作(我知道这些信息不足以给出精确的答案,但即使我不是在寻找精确的答案,只是想知道一般情况下这可以吗?情况永远不会到来)。

此外,我的日志记录过程不是异步的。

最佳答案

您收到堆已耗尽的错误,对吧?不是 PermGen 错误?

显然,日志记录库没有泄漏,但毫无疑问,如果您编写了一些在很短的时间内创建大量字符串的代码,您可能会耗尽内存。您可能会认为这会导致永久错误,因为很难想象您的日志记录对象足以解雇堆。

过多的数据库操作是典型的 OOME 罪魁祸首:尤其是返回大型结果集。我不会称之为内存泄漏。泄漏通常会在长时间运行后导致故障。如果您有一个包含一百万条记录和 20 列的表,并尝试在查询中返回该表,那么该表将一直运行,直到堆耗尽并崩溃,这是第一次,没有泄漏或引用问题。

How to avoid OOM (Out of memory) error when retrieving all records from huge table?

关于java - 写入太多日志会导致 OutOfMemory 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15737260/

相关文章:

java - Hibernate OneToMany 映射 - 实体集保存在哪里?

java - 无法使 SHA1 在 Android java 中正常工作

java - Play Framework 2.5 - 从 scala.html 文件反向路由到 .java 文件中的变量

java - 使用configure和doConfigure配置log4j之间的区别

java - VisualVM内存泄漏检测

java - 控制台输出流的类型

java - 除非测试,否则不会创建日志

Java sl4j-log4j 日志记录库无法正常工作

java - 计算目录中 MP4 文件的总持续时间时出现 SLF4J 问题

logging - MDC 不适用于 SLF4J