【发布时间】:2018-08-20 23:32:32
【问题描述】:
我定义了一个类来存储我的应用程序的配置数据。我想将此实例保存到 xml 并为此使用 XStream。但是当我尝试编写实例时,我不断收到内存不足的错误。
这是我的类定义:
public class Eol_Target_Variable {
String name;
String alias;
long value;
long default_val;
int size;
int scaling;
int div;
Boolean read_access;
Boolean write_access;
public Eol_Target_Variable(String arg_name, String arg_alias, int arg_value, int arg_size, int arg_scaling,int arg_div)
{
name = arg_name;
alias = arg_alias;
value = arg_value;
default_val = 0;
scaling = arg_scaling;
div = arg_div;
size = arg_size;
read_access = true;
write_access = true;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
...等所有标准的 getter 和 setter
这是我将单个对象导出到 xml 的处理程序
public void importConfiguration() {
XStream xstream = new XStream(new DomDriver());
Eol_Target_Variable myvar = new Eol_Target_Variable("jamie", "xtracold", 1977, 16, 1, 1);
String myxml = xstream.toXML(myvar);
System.out.print(myxml);
}
每次我得到“线程中的异常”JavaFX 应用程序线程“java.lang.OutOfMemoryError:Java 堆空间”抛出。我不明白为什么这么简单的类会抛出内存不足错误。我已经设法使用 XStream 输出简单的 String 对象,因此该库正在工作,只是这个自定义类似乎会导致问题。
我还尝试使用 VM 参数 -Xms512m -Xmx1024m 增加启动时分配的堆,但这没有区别。
谢谢 杰米
【问题讨论】:
-
我现在已经取得了一些进展。我认为问题在于类的递归导致整个 JavaFX 场景图被解析。那是一个问题。另一个是我的数据结构包括对以图形方式表示数据的图形节点的引用。我现在所做的是将我的类声明移动到单独的文件中,并且还禁止在 XML 中包含节点。
标签: out-of-memory xstream