gpt4 book ai didi

java - 是什么导致 JRE 6 JVM 代码缓存泄漏?

转载 作者:太空狗 更新时间:2023-10-29 22:41:34 25 4
gpt4 key购买 nike

自从切换到 JRE 6 后,我服务器的代码缓存使用(非堆)一直在无限增长。我的应用程序在运行时创建了很多类,但这些类在 GC 过程中被成功卸载。我可以看到这些类在 gc 日志中被卸载,并且 permGen 的使用保持不变。我特别确保在我的代码中,一旦我完成这些类,它们就会被孤立,这样它们就能正确地从 permGen 中收集垃圾。

然而,代码缓存不断增长。我在切换到 JRE 6 后才意识到代码缓存。所以我想我的问题是:

  1. GC 是否包含代码缓存?
  2. 什么会导致代码缓存内存泄漏,特别是。
  3. JDK 6 中是否存在这方面的错误?

最佳答案

您可能想通读一下这个讨论,然后回过头来看看哪些内容可能有助于缩小讨论范围: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2009-January/000530.html

这个涉及到 JDK5 但可能会有帮助: http://www.nabble.com/Java-code-cache-memory-td22202283.html

你是用它来编译jsp页面,还是类似的东西?如果不是,应用程序启动后正在编译什么?您是否将 AspectJ 与运行时织入一起使用?

了解您在做什么有助于更好地了解如何提供帮助。

另外,当代码缓存耗尽时,它是停止重新编译还是jvm崩溃?我希望是前者。

您使用的是 Sun 的 JDK 吗?我猜你是因为我怀疑其他人是否被列为版本 6,但问问也无妨。

关于java - 是什么导致 JRE 6 JVM 代码缓存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586061/

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