gpt4 book ai didi

java - 如何启用 java HotSpot VM 编译器

转载 作者:行者123 更新时间:2023-11-28 22:06:01 31 4
gpt4 key购买 nike

我正在使用 Java 1.8.0_05,Java HotSpot(TM) 64 位服务器虚拟机我在 tomcat 8.0.43 上运行一个 java web 应用程序

我最近部署了我的 .war 文件,方法是将它放到 webapps 文件夹中。

这导致记录了以下消息:

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= CodeCache: size=245760Kb used=244058Kb max_used=244079Kb free=1701Kb bounds [...] total_blobs=48344 nmethods=47669 adapters=584 compilation: disabled (not enough contiguous free space left)

我如何检查编译器的当前状态,看看它是否仍处于禁用状态?

如何启用编译器?我可以简单地重启 tomcat 吗?

我的应用程序的运行方式似乎没有任何明显的不同(例如:在速度方面)。

有趣的是,在将相同的应用程序部署到相同的服务器时,我没有收到此消息。这就是为什么我想首先重新打开编译器,而不是按照消息的建议更改设置(例如:ReservedCodeCacheSize)。

然后,如果问题仍然存在,我可以查看需要更改哪些设置。

最佳答案

解决您的个人问题 + 1 条建议:

  • 如何检查 JIT 编译器是否仍然被禁用?

最简单的做法是启动一个 jvisualvm(已随 JDK 一起提供),然后检查使用的代码缓存空间。如果您的 CodeCache 已满,JIT 编译器将保持禁用状态。检查代码缓存内存空间:

  1. 安装 MBeans JVisualVM 插件。
  2. 转到 Mbean
  3. 打开 java.lang/MemoryPool/Code Cache
  4. 检查变量“用法”(双击)

这会让您大致了解自己的位置。

  • 如何启用编译器?我可以简单地重启 tomcat 吗?

是的,重启肯定会重置缓存的状态。重启编译器的唯一其他方法是,如果您已经使用正确的参数启动了 JVM。 (启用UseCodeCacheFlushing)

  • 我的应用程序的运行方式没有区别吗?

JIT 优化您的代码,但根据您的应用程序和使用方式,您可能看不到任何明显的差异。假设您运行一个 Web 应用程序(因为 Tomcat),网络传输速度或您的浏览器渲染页面可能比 JIT 在核心 Java 速度方面为您带来的速度慢几个数量级。

  • “我在部署同一个应用程序时没有收到这条消息”

JIT 编译取决于当时正在执行的代码。在 JIT 工作的级别上,相同的应用程序可能在底层运行完全不同。对于低级函数,您使用的第 3 方库越多,您就越不能确定在您无法控制的所有线程上发生的事情。

  • 建议:

请升级该 Java 版本。在如此早的 JDK8 版本上使用是非常罕见的 (u_05),而且非常危险。 Java8 刚问世时并不是最稳定的版本,即使在以后的版本中也很容易重现错误。 There have been over 1000 bugs在 JDK8 中修复。其中许多直接解决了 JIT 问题。如果您对正在与之交谈的环境有任何控制权,请对其进行升级。如果不这样做,请通知负责人。

关于java - 如何启用 java HotSpot VM 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52741761/

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