tomcat的内存如何限制大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat的内存如何限制大小相关的知识,希望对你有一定的参考价值。

我的服务器可用空间只有300M,已经在配置了tomcat的最大内存为256M,为什么在任务管理器里面的tomcat内存大小总是超过300M呢?这样时常会导致宕机,请问如何解决?

导致宕机的原因主要是tomcat的jvm内存大小设置的问题。
如果要在myeclipse中启动tomcat,修改一下tomcat的java虚拟机的内存大小,可如下设置:
Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的
Optional Java VM arguments中添加:-Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m
把虚拟机内存改大点应该就可以了。
望采纳。
参考技术A 解压版的配置startup.bat即可追问

请问配置startup.bat的哪里?能不能稍微详细一点?

追答

不好意思,刚说错了。
windows
在catalina.bat的第一行增加:
Java代码 :set JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m
linux
在catalina.sh的第一行增加:
Java代码 :JAVA_OPTS=-Xms64m -Xmx256m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=256m

超出 sysconfig 限制的共享内存大小

【中文标题】超出 sysconfig 限制的共享内存大小【英文标题】:shared memory size beyond sysconfig limit 【发布时间】:2011-09-13 11:02:02 【问题描述】:

是否可以使用 ftruncate 将共享内存块的大小增加到超过 sysconfig 给出的共享内存限制大小?如果物理内存用完,如何让它使用交换?

【问题讨论】:

/dev/shm 大小默认为总物理内存的 50%。如果 50% 的限制全部用完,我如何让我在 linux 上的 C 应用程序使用交换空间。默认行为是它给出一个错误“磁盘上没有剩余空间”。 【参考方案1】:

可以使用ftruncate来增加共享内存块的大小...

ftruncate() 调整文件大小。它不会调整该文件的内存映射大小。所以,答案是否定的。

...超出 sysconfig 给定的共享内存限制大小?

这个限制不能被打破。 root 用户可以更改该限制。

如果物理内存用完,我如何让它使用交换?

假设 it 是一个内存映射文件,一种方法是一次只映射文件的一部分,而不是整个文件。如果一个进程使用的虚拟内存多于可用的物理内存,操作系统将自动使用交换为您释放一些物理内存。

【讨论】:

感谢您的回答。问题是进程 1 转储的文件需要由进程 2 再次加载。所以即使我映射文件的一部分,我最终还是需要转储整个文件以供后续进程使用它。我需要使用交换。 抱歉,不太明白你的问题。 我需要一个 20 GB 的文件留在共享内存块中,而我的物理 RAM 是 20 GB,但 /dev/shm/ 是 10 GB。我没有root权限。 您可以将文件存储为磁盘文件并将其映射到内存中。您无需将其保留在/dev/shm

以上是关于tomcat的内存如何限制大小的主要内容,如果未能解决你的问题,请参考以下文章

如何配置Tomcat的JVM虚拟机内存大小

如何设置Tomcat的JVM虚拟机内存大小

如何设定tomcat启动时JVM内存大小

如何设定tomcat启动时jvm内存大小

如何设置Docker容器中Java应用的内存限制

ES启动内存大小设置