对于 Java 函数中的语句:
Xxx xxx = new Xxx() {
public Abc abc(final Writer out) {
return new SomeFunction(out) {
boolean isDone = false;
public void start(final String name) {
/* blah blah blah */
}
};
}
};
哪些变量,包括函数,放在堆上,哪些将放在堆栈上?
我问这个的原因是 JVM 中的分段错误:
kernel: java[14209]: segfault at 00002aab04685ff8 rip 00002aaab308e4d0 rsp 00002aab04685ff0 error 6
00002aab04685ff8
并且00002aab04685ff0
接近了,似乎堆栈增长太快了。我尝试排查这部分代码,多次调用该函数时怀疑是否是问题的原因。如果堆上的某些变量引用了堆栈,是否有可能没有清除堆栈?