我的 Spark Streaming 程序中 GC 时间太长。在GC日志中,我发现有人System.gc()在程序中调用了。我不调用System.gc()我的代码。所以调用者应该是我使用的api。
我添加-XX:-DisableExplicitGC到 JVM 并修复了这个问题。不过,我想知道是谁打电话的System.gc()。
我尝试了一些方法。
jstack。但GC不是那么频繁,很难转储调用该方法的线程。java.lang.System.gc()。但这似乎不起作用。我如何知道谁在spark流程序中调用了System.gc()?
我是一个 C++ 初学者。我发现了一个奇怪的现象。GDB 无法给出此代码中错误根本原因的行号。
#include <array>
using std::array;
int main(int argc, char **argv) {
array<double, 3> edgePoint1{0, 0, 0};
array<double, 3> edgePoint2{0, 0, 0};
array<double, 3> edgePoint3{0, 0, 0};
array<array<double, 3>, 3> edgePoints{};
edgePoints[0] = edgePoint1;
edgePoints[1] = edgePoint2;
edgePoints[3] = edgePoint3;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
第 13 行是问题的根源。但是当我在 GBD 中使用“bt”时,它会打印第 15 行。为什么?
Program received signal SIGABRT, Aborted.
0x00007f51f3133d7f in raise () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007f51f3133d7f in raise () from /usr/lib/libc.so.6
#1 0x00007f51f311e672 in abort () from /usr/lib/libc.so.6
#2 …Run Code Online (Sandbox Code Playgroud)