Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java apache-tomcat-8.0.14中的内存泄漏_Java_Tomcat_Grails - Fatal编程技术网

Java apache-tomcat-8.0.14中的内存泄漏

Java apache-tomcat-8.0.14中的内存泄漏,java,tomcat,grails,Java,Tomcat,Grails,运行标准tomcat 8.0.14,全新安装,在托管公司运行。 我正在CentOS服务器上使用java jre1.8.0_05。从一开始,唯一的改变就是更改一些端口 到目前为止一切都很好,欢迎使用Apache消息,然后我的托管公司终止了它,因为它已经超过了1048MB。所以我想在setenv.sh中设置最大内存 export JAVA_OPTS="-Djava.awt.headless=true -server -Xms48m -Xmx256m" 它应该将最大内存设置为256,但是如果我部署h

运行标准tomcat 8.0.14,全新安装,在托管公司运行。 我正在CentOS服务器上使用java jre1.8.0_05。从一开始,唯一的改变就是更改一些端口

到目前为止一切都很好,欢迎使用Apache消息,然后我的托管公司终止了它,因为它已经超过了1048MB。所以我想在setenv.sh中设置最大内存

export JAVA_OPTS="-Djava.awt.headless=true -server -Xms48m -Xmx256m"
它应该将最大内存设置为256,但是如果我部署hello.war(基本上,运行grails hello-world,然后添加一个渲染,这是项目的一个休息),它将继续增长。它现在高达399 mb

那么,有没有办法设定一个硬限制,为什么hello world会觉得它需要399mb


有什么建议吗?

有什么错误吗?如果是,请提供详细信息。 您正在使用什么JDK?您是否监控了堆的使用情况,以确定它是否与Eden或终身空间有关。 我建议使用jvisualvm之类的工具进行内存采样,以找出哪个类使用了那么多内存

肯定有什么东西在侵蚀你的记忆,你要做一次抽样才能找到


或者,您也可以使用堆转储来找出哪个对象正在增长。

您以前使用过Grails吗:)?这很好,但它比同等的基于Java的应用程序使用更多的内存。这有几个不同的来源,一个是每个类都有一个
元类。Groovy提供的一切都只需付出很小的代价

一般来说,这不是一个严重的问题,因为使用的额外内存并不太差。请注意,尽管您所看到的与Grails或Tomcat无关,但您可以轻松地使用(或似乎使用)比指定的最大值更多的内存。这篇博文已有几年历史,但仍然非常相关:

较新JDK的另一个有趣的特性与此相关,即现在JRockit JVM已合并到“主”JVM中,没有“永久”生成,因此不再存在permgen问题。字符串和类构成了永久生成中的大部分内容,因此在Grails中更为明显,因为有大量的文件(许多是在运行时创建的)。唯一真正改变的是,permgen中的内容将在其他地方,但会产生相同的内存使用率,因此真正的permgen泄漏将是一般性泄漏,并将使服务器崩溃。同样,这是相关的,但不是你所看到的


另一件奇怪的事情是,Java1.8并不能真正与Grails一起工作——我很惊讶您已经走到了这一步。不同的次要版本有不同的问题,但我无法获得实际工作的设置组合。在正式宣布对Grails和Groovy的Java 8支持之前,您应该使用1.7版本。

JDK是jdk1.8.0_11,未监控heapOOM是“内存不足”的缩写,即OutOfMemoryError。非常好,我会尝试使用Java1.7,看看这是否会让事情变得更快乐:)