JAXB 将内存大小 XML 减少到对象
JAXB reduce memory size XML to Object
关于在 JAXB 中减少 XML 内存大小的任何建议。
XML 文件大小 - 1 MB
在 Jaxb 中解组后堆中使用的内存 - 7 MB
System.out.println("heapFreeSize--->"+Runtime.getRuntime().freeMemory());
JAXBContext jaxbContext = JAXBContext.newInstance(Document.class);
Unmarshaller unmarshallerJaxb = jaxbContext.createUnmarshaller();
Document document = (Document) unmarshallerJaxb.unmarshal(new File("test.xml"));
System.out.println("heapFreeSize--->"+Runtime.getRuntime().freeMemory());
我们在 XSD 中有大约 100 个属性,并且都是字符串。任何更好的优化来减少内存,因为我们有大量的多个 xml。
我认为以这种方式测量内存使用情况不会很有效,因为在初始化 JAXB 上下文和执行解组时会实例化很多 类。下次运行时,GC会释放大部分已用内存。
要检查特定对象的内存使用情况,您可以使用 java.lang.instrument 包,如 this answer.
所示
您还可以使用 jconsole 在运行时观察应用程序的内存使用情况,它在 JDK 中可用。它应该显示对象正在使用时使用了多少内存,以及在不再使用后是否释放了内存。
通常 JAXB 非常高效,除非您的应用程序处理非常大的 XML,否则您不应该关心内存问题。
关于在 JAXB 中减少 XML 内存大小的任何建议。
XML 文件大小 - 1 MB
在 Jaxb 中解组后堆中使用的内存 - 7 MB
System.out.println("heapFreeSize--->"+Runtime.getRuntime().freeMemory());
JAXBContext jaxbContext = JAXBContext.newInstance(Document.class);
Unmarshaller unmarshallerJaxb = jaxbContext.createUnmarshaller();
Document document = (Document) unmarshallerJaxb.unmarshal(new File("test.xml"));
System.out.println("heapFreeSize--->"+Runtime.getRuntime().freeMemory());
我们在 XSD 中有大约 100 个属性,并且都是字符串。任何更好的优化来减少内存,因为我们有大量的多个 xml。
我认为以这种方式测量内存使用情况不会很有效,因为在初始化 JAXB 上下文和执行解组时会实例化很多 类。下次运行时,GC会释放大部分已用内存。
要检查特定对象的内存使用情况,您可以使用 java.lang.instrument 包,如 this answer.
所示您还可以使用 jconsole 在运行时观察应用程序的内存使用情况,它在 JDK 中可用。它应该显示对象正在使用时使用了多少内存,以及在不再使用后是否释放了内存。
通常 JAXB 非常高效,除非您的应用程序处理非常大的 XML,否则您不应该关心内存问题。