Java jdom文档的大小与单个变量

Java jdom文档的大小与单个变量,java,xml,jsp,session,jdom,Java,Xml,Jsp,Session,Jdom,我计划在JSP中从xml文件读取概要文件数据 现在,我可以读取它并将重要信息存储在单个会话变量中,也可以将xml文件的整个部分放在jdom文档中,并将其放在单个会话变量中 根据您的经验,数据大小会影响较大还是可以忽略不计?好吧,存储在内存中的对象越多,可用的堆内存就越少,没有办法解决这个问题 这实际上取决于你的应用领域 但一般来说,人们在数据源(您的xml文件)和应用程序域模型之间使用缓存解决方案(我认为ehCache就是其中之一) 缓存过期或按需清除,因此您可以合理地控制对象及其占用的堆内存

我计划在JSP中从xml文件读取概要文件数据

现在,我可以读取它并将重要信息存储在单个会话变量中,也可以将xml文件的整个部分放在jdom文档中,并将其放在单个会话变量中


根据您的经验,数据大小会影响较大还是可以忽略不计?

好吧,存储在内存中的对象越多,可用的堆内存就越少,没有办法解决这个问题

这实际上取决于你的应用领域

但一般来说,人们在数据源(您的xml文件)和应用程序域模型之间使用缓存解决方案(我认为ehCache就是其中之一)


缓存过期或按需清除,因此您可以合理地控制对象及其占用的堆内存

嗯,存储在内存中的对象越多,可用堆内存就越少,没有办法解决这个问题

这实际上取决于你的应用领域

但一般来说,人们在数据源(您的xml文件)和应用程序域模型之间使用缓存解决方案(我认为ehCache就是其中之一)


缓存过期或按需清除,因此您可以合理地控制对象及其占用的堆内存

在使用DOM将XML存储在内存中时,有一条经验法则。XML文件的大小为*10。所以,如果您的XML文件是1MB大,那么您将需要10MB的内存来存储它

但根据我的经验,我永远不会在内存中存储DOM文档。有一次,一些学生试图这样做,但XML文件是50MB大,所以猜猜会发生什么?我们的内存用完了

对于您的情况,我将创建一个可以保存所有相关信息的类,通过读取xml填充该类


您真的需要在会话中存储配置文件数据吗?你真的一直都需要它吗?有时候,只需要一个id或一个小类就足够了。

当涉及到使用DOM在内存中存储XML时,有一条经验法则。XML文件的大小为*10。所以,如果您的XML文件是1MB大,那么您将需要10MB的内存来存储它

但根据我的经验,我永远不会在内存中存储DOM文档。有一次,一些学生试图这样做,但XML文件是50MB大,所以猜猜会发生什么?我们的内存用完了

对于您的情况,我将创建一个可以保存所有相关信息的类,通过读取xml填充该类

您真的需要在会话中存储配置文件数据吗?你真的一直都需要它吗?有时候,只需要一个id或一个小类就足够了。

-昨天发布的(我是维护者)有一个改进的内存占用。。。它使用的内存少于输入文档的10倍。此外,如果在解析XML时使用“SlimJDOMFactory”,则使用的更少。典型的275KB文档使用SlimJDOMFactory在1.5Meg中解析。请参阅上JDOM 2.0.0的性能指标,并搜索SlimJDOMFactory,以使用(速度较慢但效率更高的)工厂获得结果

这并不能回答您的问题,因为实际上,这完全取决于输入数据的大小。我的经验是,对于小文档,只需将其全部加载到内存中就更容易了,而对于大文档,只需“努力”就可以了。

-昨天发布(我是维护者)的内存占用有所改善。。。它使用的内存少于输入文档的10倍。此外,如果在解析XML时使用“SlimJDOMFactory”,则使用的更少。典型的275KB文档使用SlimJDOMFactory在1.5Meg中解析。请参阅上JDOM 2.0.0的性能指标,并搜索SlimJDOMFactory,以使用(速度较慢但效率更高的)工厂获得结果


这并不能回答您的问题,因为实际上,这完全取决于输入数据的大小。我的经验是,对于小文档,只需将其全部加载到内存中就更容易了,而对于大文档,只需“努力”即可。

基本上,我指的是将数据存储在jdom对象和将数据存储在var对象之间的区别。是的,这取决于您需要什么。如果您可以在内存中只存储XML的一部分,那么您肯定应该这样做。根据我的经验,XML标记在运行时几乎不需要,只是用于持久化数据。基本上,我指的是在jdom对象中存储数据和在var对象中存储数据之间的区别。是的,这取决于您需要什么。如果您可以在内存中只存储XML的一部分,那么您肯定应该这样做。根据我的经验,XML标记在运行时几乎不需要,只是用于持久化数据。我不需要这样做,我只会更容易。我的xml文件最大为1Kb。不同的解析器之间是否存在差异?会话数据是否也有经验法则?我希望避免一直从xml文件中读取相同的数据。会话中存储的数据越少越好。您必须考虑到,如果您在会话中为每个用户存储1MB,这将乘以使用您的系统的用户。因此,如果有100个用户,您的应用程序将消耗100MB。这很容易达到临界极限。好吧,谢谢你的经验法则。我不需要这样做,我只会更容易。我的xml文件最大为1Kb。不同的解析器之间是否存在差异?会话数据是否也有经验法则?我希望避免一直从xml文件中读取相同的数据。会话中存储的数据越少越好。您必须考虑到,如果您在会话中为每个用户存储1MB,这将乘以使用您的系统的用户。因此,如果有100个用户,您的应用程序将消耗100MB。这很容易达到临界极限。