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