影响WebSphere内存使用的参数invocationCacheSize
为了提高应用程序的执行性能,WebSphere内部会使用一个缓存管理器把解析执行每一个URL的一些信息保持起来(被缓存的信息不包括请求中提交的参数),以备下一次请求同一个URL时,不需要再重新解析这些信息。
在达到缓存管理器的大小限制后,采用LRU算法从中删除最近较少被请求的URL的对应条目。其大小限制由系统属性invocationCacheSize控制,缺省值是50个条目。
而且该管理器是建立在线程级别上,即在Web Container中的每一个执行线程都各自拥有一个缓存管理器。假设在Web Container中处于活跃状态的执行线程数为100,则总的被缓存条目的上限是50*100=5000个。实际观察到的单个缓存条目最少占用内存20K,最多100K,估算平均每个缓存条目占用内存50K字节,则5000个条目大约会占用250M内存。如果活跃状态的执行线程数多于400个,那么WebSphere自身占用的内存就会超过1G。
虽然较大的缓存大小可以提高执行性能,但是因为32位的JVM所能使用得最大内存不超过2G,相对来讲WebSphere的缺省缓存大小造成的内存占用太大了。因此对于繁忙的应用服务器应该适当减小缓存的大小。应用服务器的繁忙程度,或者说处于活跃状态的执行线程数目,可以使用命令netstat –an|grep 9080|grep EST|wc –l近似地确定。如果需要最小的设置可以是1。
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=1342975