gpt4 book ai didi

java - 如何帮助java tomcat进程重新获得已用内存?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:36:51 26 4
gpt4 key购买 nike

我们正在运行一个 Web 应用程序,它使用 Java 64 位 5 gig 的最大堆大小的 -Xmx。我们无法控制 Java 代码。我们只能调整配置参数。我们面临的情况是,java 进程在启动时占用了分配的完整堆后,开始对网站请求的响应非常缓慢。我的猜测是等待 GC 收集未使用的内存对象。

下图将向您展示 linux 中的 top 图像,显示进程的危急情况。

top image of java process http://cp.images.s3.amazonaws.com/ForumImages/java-gc-issue.jpg

有什么办法可以帮助java重新获得已分配空间内的已用内存。

编辑 1:我使用了下面的一些答案来得到我的问题的答案。由于我的问题太难回答了,结果变成了讨论。我将发布我是如何监控 GC 周期的,我会选择投票更多的答案。我通过真正的 vnc 查看器使用 jconsole,以便能够从我的 Windows 机器连接到我运行 tomcat 的 Linux 机器。

我使用这个参数来启动 java 进程:

-Djava.awt.headless=true -server -Xms512m -Xmx5120m -Dbuild.compiler.emacs=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=4999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

这是我从 jconsole 到 vnc 查看器得到的输出类型。 GC Sample Image http://cp.images.s3.amazonaws.com/ForumImages/Sample_GC_Image.jpg

最佳答案

我建议您不要猜测。获取一些数据以确切了解发生了什么。您可以使用 visual gc看看发生了什么。

如果是烫发空间被填满,您将无能为力。

哪个 JVM?如果它是 5 或更高,除了可以调整的最大堆大小之外,还有其他参数。查看http://blog.springsource.com/2008/10/14/optimising-and-tuning-apache-tomcat-part-2/

关于java - 如何帮助java tomcat进程重新获得已用内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712018/

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