如何管理大型String

时间:2017-01-10 00:30:47

标签: java sapjco3

在尝试将其保存到文件时,我一直在努力处理大量生成的字符串。

此字符串来自com.sap.conn.jco.JCoFunction.toXML();方法

我正在尝试这个:

public static void writeXML(JCoFunction jcoFunction, String path){
    File f = new File("C:/XMLFile.xml");

    try {
        BufferedWriter bw = new BufferedWriter(new FileWriter(f));
        bw.write("<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?> ");
        bw.write(jcoFunction.toXML());
        bw.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这应该创建一个大约45KB大小的xml。但是我得到了一个java堆空间错误。我需要帮助来制作一个有效的方法,以避免错误。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我不了解JCoFunction。但是,试试这段代码。

    [["text", "```ruby\r\ndef hello\r\nputs \"hello world!\"\r\nend\r\n```"]

答案 1 :(得分:0)

如果XML数据确实只是45KB整体,那么你配置的堆大小太小,或者你遇到了JCo中的错误(例如内部循环递归循环)。

如果还没有使用最新的JCo补丁级别,我会先安装并尝试这个。也许这个潜在的错误已经被修复了。最新的JCo补丁级别目前为3.0.16。

如果这没有帮助,请增加Java堆空间,例如:通过在启动Java程序时指定JVM选项-Xmx1024m(或-Xmx2048m甚至更大)来实现。

如果仍然无法解决问题,您可能需要向SAP支持人员解决此问题。

此外,您可以打开JCo跟踪级别8并检查JCo跟踪在JCoFunction实例中实际传输/存储的数据量。