gpt4 book ai didi

Java 和 Tomcat - CodeCache 已满。编译器已被禁用

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:11 42 4
gpt4 key购买 nike

我的情况

  • 我开发了一个用于文档分析的 Web 服务
  • 这个web服务读取txt和pdf文档
  • 为了阅读 pdf 文件,我使用的是我的大学顾问开发的 java 库
  • 我正在使用 Java 7
  • 我目前正在 Tomcat v7.0 上部署它
  • 如果我从我的应用程序生成一个war文件并将它托管在我电脑上的本地tomcat上,或者如果我通过eclipse ee在tomcat上启动我的应用程序,读取pdf文件没有问题

  • 我的问题
  • 我已经为自己设置了一个小服务器(不是最好的硬件,双核 cpu,4g ram),安装了 tomcat、java 和我认为必要的其余部分。
  • 当我现在使用 tomcat 管理器在服务器 tomcat 上部署 war 文件时,一切正常,直到我尝试让应用程序读取 pdf 文件。
  • 在应用程序读取几页后,我收到一个错误,提示 CodeCache 已满,因此编译已被禁用。

  • pdf 导入期间的示例错误输出
    此日志显示 pdf 是如何导入的,并且在某些时候错误消息开始。我已将错误消息标记为粗体。
    ...
    2012 年 5 月 31 日上午 11:15:40 infovis.structure.pdf.PDF 导入流程信息:
    处理第 13 页
    2012 年 5 月 31 日上午 11:15:40 infovis.structure.pdf.PDFImport process INFO:Processing Page 14
    2012 年 5 月 31 日上午 11:15:41 infovis.structure.pdf.PDFImport process INFO:Processing Page 15
    Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1858 nmethods=1318 adapters=490 free_code_cache=44631Kb largest_free_block=45618688 Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1859 nmethods=1318 adapters=490 free_code_cache=44631Kb largest_free_block=45618688
    2012 年 5 月 31 日上午 11:16:19 infovis.structure.pdf.PDFImport process INFO:Processing Page 16
    2012 年 5 月 31 日上午 11:16:20 infovis.structure.pdf.PDFImport process INFO:Processing Page 17
    Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1860 nmethods=1318 adapters=490 free_code_cache=44630Kb largest_free_block=45618688 May 31, 2012 11:17:07 AM infovis.structure.pdf.PDFImport process INFO: Processing Page 18 Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled. Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize= Code Cache [0x00007fa43437e000, 0x00007fa4347fe000, 0x00007fa43737e000) total_blobs=1861 nmethods=1318 adapters=490 free_code_cache=44633Kb largest_free_block=45618688
    等等...
    到目前为止我尝试过的
    我试图在我的服务器上更改 tomcat 配置中的缓存大小(我不是最擅长使用 linux shell)。我曾尝试增加 CodeCache 大小以及其他缓存的大小,但问题仍然存在。我已经检查了我的代码是否存在可能的泄漏,但还没有发现任何泄漏(请记住,如果我通过 eclipse 启动它,我不会收到此消息,因此这可能表明存在 tomcat(?) 配置问题)。我还尝试设置参数“UseCodeCacheFlushing”,当它变满时应该强制清空代码缓存,但不知何故它不会影响应用程序崩溃。
    我的tomcat服务器配置
    我读到默认的 CodeCache 大小是 32MB 或 64MB,当它是 64 位应用程序时。我尝试保留 512mb(也许我在配置中做错了什么?)但问题当然又发生了。

    You may pass JVM startup parameters to Java here. If unset, thedefault options will be: -Djava.awt.headless=true -Xmx128m-XX:+UseConcMarkSweepGC

    Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector(improved response time). If you use that option and you run Tomcat ona machine with exactly one CPU chip that contains one or two cores,you should also add the "-XX:+CMSIncrementalMode" option.JAVA_OPTS="-Djava.awt.headless=true -Xmx3g -Xms2g -XX:+UseCodeCacheFlushing -XX:+UseG1GC -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=512m"


    我对此的看法
    在我的研究中发现一些注释,CodeCache 相关的问题可能表示内存泄漏问题,当出现编程失败时,结果是垃圾收集器无法清空缓存。
    这个 可能 是可能的,遗憾的是我没有我阅读 pdf 的库的源代码。但另一方面,我在本地 tomcat(四核,4x 3.0ghz,还有 4g ram)上的台式电脑上阅读 650 页 pdf 没有问题,这让我感到困惑。
    难道这只是一个 tomcat 问题,如果我使用另一台服务器进行部署,比如 glassfish,就可以解决这个问题?
    任何人都可以帮助我或提供任何想法或建议吗?也许我做错了一些配置?我在使用 tomcat 或其他服务器方面没有经验,因此非常欢迎任何帮助。
    非常感谢您的每一个回答,并认为您正在与我分享。

    最佳答案

    尝试另一个像 JRockit 这样的 JVM,在那里你不应该有这个问题。如果它是 Tomcat - 尝试查看它是否在其日志中记录了一些关于泄漏的信息 - 它通常会针对类加载器问题这样做。

    关于Java 和 Tomcat - CodeCache 已满。编译器已被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10853147/

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