【发布时间】:2012-10-01 20:42:03
【问题描述】:
从一个示例应用程序中,他们使用 slf4j,并且依赖关系的范围是运行时。
这样做是否会对性能产生任何影响,或者这是应用程序启动期间的一次性命中?
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>runtime</scope>
</dependency>
我相信 spring 和 log4j 存在一些内存泄漏,因为每当我在开发过程中使用 jetty 运行我的应用程序时,如果它在发生更改时每 10 秒重新加载一次,它最终会给我一个 OOM 错误(permgen?)几个周期后,我被告知这是因为弹簧采伐。
评论?
【问题讨论】:
-
因为每当我在开发过程中使用 jetty 运行我的应用程序时,如果它在发生更改时每 10 秒重新加载一次,如果您不知道,可以禁用此功能
-
wiki.eclipse.org/Jetty/Howto/Prevent_Memory_Leaks - 我们已经使用上述方法在最新版本的 jetty 中解决了许多此类问题。并不是说它会解决您的问题,这就是为什么我只发表评论......但根据发生的情况,它可能会有所帮助。
-
@mattb 什么可以禁用,如果每 x 秒有变化,则重新加载?这就是我想要的......
-
是的。将
scanIntervalSeconds设置为 0。docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin
标签: java spring-mvc log4j jetty slf4j