对于 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
非常接近,看起来堆栈增长得太快了。我试图调查代码的这一部分,并怀疑在多次调用此函数时是否是问题的原因。如果堆栈被堆上某些变量引用,那么它可能不会清除吗?