gpt4 book ai didi

java - 限制 Java 控制台堆占用空间?

转载 作者:行者123 更新时间:2023-12-01 16:12:48 26 4
gpt4 key购买 nike

我有一个 Java 小程序(实际的 ),它会频繁生成 System.out 日志消息。如果在用户浏览器中启用了 Java 控制台,它当然会保留对所有这些字符串的引用并防止它们被垃圾收集。问题在于控制台保留的日志消息数量:小程序堆增长得非常快。运行四天后,它将抛出 OutOfMemory 异常。据我从 jmap 和 jhat 来看,日志字符串代表了它的大部分足迹。

是否有 API 可以更严格地限制 Java 控制台保留的消息数量或总大小?如果出现错误,我只需要最近的几条消息。控制台确实会在某个时刻开始淘汰最旧的消息,但只有在它变得非常巨大之后。

我意识到“不启动控制台”或“仅清除控制台”是可能的解决方案,但是您是否尝试过询问非技术用户是否启用了 Java 控制台?或者尝试引导他们查看和清除它?我真的希望他们保持控制台处于启用状态,这样我就可以在出现错误时看到消息。

最佳答案

使用java.util.logging代替System.out.println 。稍后更改日志级别并减少日志消息的数量要容易得多。

另请检查MemoryHandler ,它使用缓冲区并自动丢弃旧的日志消息。

关于java - 限制 Java 控制台堆占用空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/337463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com