我计划从 JSP 中的 xml 文件中读取配置文件数据。
现在我可以读取它并将重要信息存储在单个会话变量中,或者将 xml 文件中的整个部分放入 jdom 文档中并将其放入单个会话变量中。
根据您的经验,数据大小会影响大还是可以忽略不计?
JDOM 2.0.0 - 昨天发布(我是维护者)改进了内存占用……它使用的内存不到输入文档的 10 倍。此外,如果在解析 XML 时使用“SlimJDOMFactory”,则使用的更少。使用 SlimJDOMFactory 在 1.5Meg 中解析一个典型的 275KB 文档。在http://hunterhacker.github.com/jdom/jdom2/performance.html上查看 JDOM 2.0.0 的性能指标并搜索 SlimJDOMFactory 以使用(较慢)但更高效的工厂获得结果。
这绝不会回答您的问题,因为实际上,这完全取决于您的输入数据大小。我的经验和我的偏见是,对于小型文档,将其全部加载到内存中会更容易,而对于大型文档则只需要“出汗”。
使用 DOM 将 XML 存储在内存中时,有一条经验法则。XML 文件的大小 * 10。因此,如果您的 XML 文件是 1MB 大,那么您将需要 10MB 内存来存储它。
但根据我的经验,我永远不会在内存中存储 DOM 文档。曾经有学生尝试这样做,但 XML 文件有 50MB 大,猜猜会发生什么?我们的内存用完了。
对于您的情况,我将创建一个可以保存所有相关信息的类,通过阅读 xml 来填充该类。
您真的需要在会话中存储配置文件数据吗?你真的需要它吗?有时只需要一个 id 或一个小类就足够了。
好吧,您在内存中存储的对象越多,您拥有的可用堆内存就越少,这是没有办法的。
这实际上取决于您的应用程序域。
但总的来说,人们在数据源(您的 xml 文件/s)和他们的应用程序域模型之间使用缓存解决方案(ehCache 就是其中之一)。
缓存过期或按需清除,因此您可以合理控制对象及其占用的堆内存。