我正在使用YourKit Java Profiler分析我的webapp。webapp运行在tomcat 7 v30上,我可以看到JVM的堆大约是30兆,但Tomcat.exe正在使用200兆,并且一直在增加。
截图:http://i.imgur.com/Zh9NGJ1.png(左边是Java使用了多少内存,右边是tomcat.exe的Windows使用情况)
我尝试过为tomcat添加不同的标志,但内存使用量仍然在不断上升。我也尝试过预编译我的.jsp文件,以防万一有帮助,但它没有。
我添加到tomcat的java标志中的标志:
-XX:+UseG1GC
-XX:MinHeapFreeRatio=10
-XX:MaxHeapFreeRatio=10
-XX:GCTimeRatio=1
Tomcat也作为windows服务运行,如果这很重要的话。
我需要帮助弄清楚如何让tomcat使用更少的内存/知道为什么它使用这么多内存。就像现在一样,它一直在运行,直到它使用整个系统的内存。
您可以转储Yor内存,看看正在使用它。实际上,它将是一长串您的应用程序对象,或者您不知不觉中内化的字符串。
你可以使用像JVM这样的工具,或者一个很酷的eclipse工具:http://www.eclipse.org/mat/来做这件事。
如果你这样做了,但仍然不知道为什么,那么请告诉我们你的记忆中有哪些对象....
您应该在应用程序中查找内存泄漏,或者存在时间过长且未失效的大型会话。尝试思考哪些功能可以长时间容纳太多对象。
所以我找到的解决方案是给tomcat运行添加一些标志。
不确定是哪面旗。我想可能是我们使用的jacob库,或者是这些标志的组合。希望这能在将来帮助人们。
-XX:+UseG1GC
-XX:MinHeapFreeRatio=10
-XX:MaxHeapFreeRatio=10
-XX:GCTimeRatio=1
-Dcom.jacob.autogc=true
-Dorg.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true
有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:
我有一个web应用程序,在Tomcat上部署该应用程序通常需要大量的时间。我怀疑某个地方的数据库连接正在等待超时,但这只是一种猜测,我想确定是什么导致了中断,这样我就可以解决这个问题。谁能给我提个建议吗?我是不是应该在Tomcat加载战争时对它进行侧写并在那里寻找线索呢?如果是的话,有没有适合初学者的教程? 如果这很重要,我的web应用程序使用spring和Hibernate。我的一个同事告诉我,
但我怎么才能阻止码头服务器呢?我听说了一些关于stop.jar和start.jar的事情。我能在哪里找到它?它集成在Jetty-all-jar中吗?
我有这段代码,但我不明白为什么会出现以下错误:
我们的软件正在通过一个从内存流读取数据的GZipStream解压某些字节数据。这些数据以4KB的块解压缩,并写入另一个内存流。 我们已经意识到进程分配的内存远高于实际解压的数据。 示例:具有2425536字节的压缩字节数组被解压缩为23050718字节。我们使用的内存分析器显示了方法MemoryStream。设置容量(Int32值)分配的67104936字节。这是保留内存和实际写入内存之间的2.9
非法尝试将非集合映射为@onetomany、@manytomany或@collectionofelements:cloudcodes.schema.generator.model.useroudata.orgunitpathid 有人能帮我提前谢谢你吗。