【发布时间】:2014-08-27 11:57:35
【问题描述】:
我正在维护一个在 Tomcat6 上运行的遗留 GUI 应用程序,在某些情况下,当用户登录时,该应用程序会将大量 java 对象加载到会话中,并且需要大量内存(高达 200MB)。 我安装了 psi-probe 来监控内存,它显示了这个:
当前内存使用率为 99.3%
免费:3.41 MB 总计:487.25 MB 最大:487.25 MB
我想避免触及对象本身的结构,因为它也是一个复杂的怪物,我可能会破坏一些东西。 我真的不知道我有什么选择。我正在考虑尝试对其进行序列化并将其作为文件写入驱动器上并按需访问它。
有什么想法吗?
干杯。
【问题讨论】:
-
你检查过日志吗?
-
您需要将加载推迟到实际需要时,并避免将其存储在用户会话中:例如,看看您是否可以将其设为请求范围。您必须找到它在会话中存储的位置以及从会话中获取它的位置,然后更改它们。并拍摄设计师和以前的实施者。
-
是的,我想我现在会尝试这样做,并在需要时尝试加载它,然后再将其删除。这似乎是最好的。但整个事情非常复杂。
-
嗯,经过测试,对象需要3.5s才能实例化。每当用户单击链接时,都无法做到这一点。
标签: java session tomcat memory tomcat6