虽然我猜这是极不可能的——但有没有办法在不重启服务器的情况下清除 ehcache?我需要清除缓存以进行某些测试 - 我无法更改代码并且无法多次重启服务器。
PS:我使用的是 apache-tomcat-5.5.25
我遇到了在 tomcat 中运行的 JRuby (rails) 应用程序的问题。有时页面请求可能需要一分钟才能返回(即使 rails 日志在几秒钟内处理了请求,所以这显然是一个 tomcat 问题)。
我想知道哪些设置最适合 java 堆大小。我知道没有明确的答案,但我想也许有人可以评论我的设置。
我在一个具有 1.7g 内存的小型 EC2 实例上。我有以下 JAVA_OPTS:
-Xmx1536m -Xms256m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled
我的第一个想法是 Xmx 太高了。如果我只有 1.7gb 并且我分配了 1.5gb 给 java,我觉得我会得到很多分页。通常,我的 java 进程显示(顶部)1.1g res 内存和 2g 虚拟。
我还在某处读到,将 Xms 和 Xmx 设置为相同的大小会有所帮助,因为它消除了在内存分配上花费的时间。
我不是 java 人,但我的任务是解决这个问题,我正试图找出从哪里开始。非常感谢任何提示!
更新
我已经开始使用分析垃圾收集转储-XX:+PrintGCDetails
当我注意到这些偶尔的长加载时间时,gc 日志会发疯。我做的最后一个(花了 25 秒完成)我有 gc 日志行,例如:
1720.267: [GC 1720.267: [DefNew: 27712K->16K(31104K), 0.0068020 secs] 281792K->254096K(444112K), 0.0069440 secs]
1720.294: [GC 1720.294: [DefNew: 27728K->0K(31104K), 0.0343340 secs] 281808K->254080K(444112K), 0.0344910 secs]
一次请求大约有 300 个!现在,我不完全明白为什么它总是 GC'ng 从 ~28m 一遍又一遍地下降到 0。