小编Fra*_*ank的帖子

我如何知道谁在spark流程序中调用了System.gc()?

我的 Spark Streaming 程序中 GC 时间太长。在GC日志中,我发现有人System.gc()在程序中调用了。我不调用System.gc()我的代码。所以调用者应该是我使用的api。

我添加-XX:-DisableExplicitGC到 JVM 并修复了这个问题。不过,我想知道是谁打电话的System.gc()

我尝试了一些方法。

  1. 使用jstack。但GC不是那么频繁,很难转储调用该方法的线程。
  2. 我添加了在 JProfiler 中调用方法时添加线程转储的触发器java.lang.System.gc()。但这似乎不起作用。

我如何知道谁在spark流程序中调用了System.gc()?

garbage-collection jvm spark-streaming

2
推荐指数
1
解决办法
424
查看次数

数组索引越界,但 gdb 报告错误的行 - 为什么?

我是一个 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)

c++ debugging gdb undefined-behavior

0
推荐指数
1
解决办法
703
查看次数