gpt4 book ai didi

java - 由于 LogManager.getLogger(Logger.class.getName()); 导致 PermGen 空间增加;

转载 作者:行者123 更新时间:2023-12-02 10:53:50 25 4
gpt4 key购买 nike

我遇到了 PermGen 内存问题,并使用 Java VisualVM 对其进行调试。

我将问题追溯到一行代码,该代码导致内存使用增加而不减少。通过这行代码,没有类被卸载。

代码行是:

LogManager.getLogger(Logger.class.getName());

我正在使用log4j2。有没有人对修复此行以消除内存问题有任何建议?

最佳答案

这是一个有根据的猜测。正如 the link offered @Joachim in the comments 建议的,增加 PermGen 空间意味着 ClassLoader 加载的类数量增加,或者内部字符串数量增加。

( See this StackOverflow question to learn more about String interning )

基于此,我会更改您的代码以引用静态内容,这可能 getName() 不会给您提供。

我推荐:

LogManager.getLogger(Logger.class.getName().intern());

或者更常见的是:

LogManager.getLogger(Logger.class);
<小时/>

但是您真的想针对 Logger.class 进行记录吗?

也许考虑实际做:

LogManager.getLogger(MyClassWhereLoggingHappens.class);

关于java - 由于 LogManager.getLogger(Logger.class.getName()); 导致 PermGen 空间增加;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28217754/

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