回答
您可以使用StAX封送XML的外部主體,然後使用JAXB封送重複的對象,而不必將它們全部存儲在內存中。
看到這個線程:http://glassfish.10926.n7.nabble.com/Marshalling-Large-data-into-xml-td55636.html
死鏈接:(你能找到它嗎? – yunandtidus
我建議喲以下。
你如何創建你的XML?我想你首先創建你的對象圖,即創建它們之間的所有對象和依賴關係。然後調用是這樣的:
JAXBContext.newInstance("YOUR PACKAGES LIST").marshal(rootObject, out);
JAXB訪問你的對象如豆類,使用干將即。所以,在編組之前,你並不需要創建完整的對象圖。你只需要提供getter的按需實現,以便他們能夠根據請求獲取對象。我相信它會幫助你減少內存消耗。
如果你不想在你的類內部實現這種按需機制,你可以使用AspectJ或其他面向方面的庫(或直接的字節碼修改庫,如cglib或javassist)將按需檢索代碼插入到你的模型對象。
是的....我創建所有的對象,然後發送給編組。然而,我已經改變了設計,使得重複對象(作爲員工數據的XML中的節點)分批完成(創建對象並填充數據),因此沒有堆空間問題。我們如何執行按需實施? – Balaji
- 1. 用jaxb即時生成xml
- 2. JAXB - 生成樣本xml?
- 3. 使JAXB生成XML處理指令
- 4. 如何使用JAXB沒有XML根元素生成XML文檔
- 5. 使用JAXB生成的XML中的重複字段
- 6. JAXB:使用包含較少屬性的XSD從Java生成XML
- 7. 如何讀取從JAXB生成的XML,使用C
- 8. 使用jaxb生成xml時空對象的空標記
- 9. 驗證使用JAXB類(不是由XSD)生成的XML
- 10. JAXB區分大小寫的類生成
- 11. JAXB XJC代碼生成 - 由Marshaller生成的xml中缺少「schemaLocation」
- 12. Jaxb直接生成XML到OutputStream
- 13. 如何從XML生成JAXB類
- 14. JAXB如何正確生成XML?
- 15. JAXB動態XML標記生成
- 16. 使用JAXB解組XML時發生ClassCastException
- 17. Java JAXB - 如何使用生成的bean
- 18. 如何使用由Jaxb生成的ObjectFactory?
- 19. JAXB Bean生成
- 20. 如何使用JAXB從bean中生成xml
- 21. 使用jaxb從一個xml文檔生成兩個對象
- 22. 如何使用JAXB從XML模式生成Java Enum?
- 23. 如何自定義JAXB編組(如果從XML生成JAXB bean)
- 24. 生成大的NSString xml
- 25. 使用Jersey發送大型JAXB對象會生成OutOfMemoryError
- 26. 如何使用JAXB生成CDATA塊?
- 27. 地圖JAXB生成使用XPATH
- 28. 使用JAXB生成隨機實例
- 29. 使用JAXB從XMLSchema.xsd中生成Java類
- 30. 使用JAXB可以生成超類型?
從你的問題,我猜你的源數據沒有在JAXB對象一起開始這是正確的(數據庫,遠程服務?)?如果是這樣,那麼我建議你考慮不使用JAXB來編組XML。相反,直接從您的源數據中編寫XML,並保存構建所有這些對象的內存負擔,以便將它們編組爲xml。 –
@Patrice:輸入來自JSON字符串。我需要構建這些對象,在它們之上運行一些規則(Drools)。最後我需要將它們編成XML。所以我不能直接從源代碼運行它們。 – Balaji