(本文档仅供参考)

问题

         用户在使用系统的时候发现,明明已经对电子表格报表引用的数据都开启了缓存了,但在打开报表后,再次访问报表还是有时快有时慢,看起来就像缓存不生效。

解决方案

         原因可能是:JVM参数中设置了-XX:SoftRefLRUPolicyMSPerMB=0的参数。


         详细说明: 当JVM参数中配置了-XX:SoftRefLRUPolicyMSPerMB=0 参数,这个参数是控制SoftReference缓存时间,而我们的电子表格的缓存都是存储SoftReference里边的,当设置了这个参数设置为0的时候,任意操作,只要是触发了gc,这时候就会清空了电子表格缓存,导致即使在内存足够的情况下,缓存也不生效了。

         对于-XX:SoftRefLRUPolicyMSPerMB=0 参数的解析,可参考网上的资料: https://blog.csdn.net/u010833547/article/details/90289325 


 解决方案:去掉这个JVM参数-XX:SoftRefLRUPolicyMSPerMB=0 。