Debugging 在不修改源代码的情况下调用runtime.GC()/memprofile
我有一个编译过的Go程序,有时会占用大量内存。不幸的是,我没有它的源代码,所以不可能修改它来添加Debugging 在不修改源代码的情况下调用runtime.GC()/memprofile,debugging,go,profile,Debugging,Go,Profile,我有一个编译过的Go程序,有时会占用大量内存。不幸的是,我没有它的源代码,所以不可能修改它来添加运行时/pprof服务器。我想知道有没有办法在不修改源代码的情况下调用runtime.GC()或生成堆转储?我不这么认为 即使对一个信号做出反应(比如SIGQUIT),也需要对它进行编码 只有可执行文件(无.a,无源代码),您可以考虑与Go程序的提供者(或作者)进行交互,并给他一些bugreport@BasileStarynkevitch不幸的是,由于断电,源代码已经丢失:(我的硬盘一直处于断电状态。
运行时/pprof
服务器。我想知道有没有办法在不修改源代码的情况下调用runtime.GC()
或生成堆转储?我不这么认为
即使对一个信号做出反应(比如SIGQUIT),也需要对它进行编码
只有可执行文件(无
.a
,无源代码),您可以考虑与Go程序的提供者(或作者)进行交互,并给他一些bugreport@BasileStarynkevitch不幸的是,由于断电,源代码已经丢失:(我的硬盘一直处于断电状态。忘记这个项目,开始一个新的项目,你的下一个编程项目的寿命很短,使用一些系统,比如内存压力会导致GC运行,并且它通常在有活动程序的情况下非常频繁地运行。如果你看到大量内存使用,这可能是因为)程序实际上正在使用内存,因此GC无法释放它,或者b)程序已经运行了GC并释放了内存,但操作系统没有看到回收内存的需要。通过创建一个共享相同内存/fd空间的用户线程来运行runtime.GC()
,进行黑客攻击怎么样?它可行吗?不确定(我还没有测试过)。即使是类似于或类似于线程的文章也需要程序源来调试任何东西。