相关疑难解决方法(0)

Python脚本由SIGKILL终止,而不是抛出MemoryError

再次更新

我试图创建一些简单的方法来重现这一点,但还没有成功.

到目前为止,我已经尝试了各种简单的数组分配和操作,但它们都抛出了一个MemoryError,而不仅仅是SIGKILL崩溃.

例如:

x =np.asarray(range(999999999))
Run Code Online (Sandbox Code Playgroud)

要么:

x = np.empty([100,100,100,100,7])
Run Code Online (Sandbox Code Playgroud)

只是按原样抛出MemoryErrors.

我希望有一种简单的方法可以在某些时候重新创建它.

结束更新

我有一个运行numpy/scipy和一些自定义C扩展的python脚本.

在Virtual Box下的我的Ubuntu 14.04上,它运行完成就好了.

在Amazon EC2 T2微型实例上,它使用输出终止(运行一段时间后):

杀害

在python调试器下运行,信号没有被捕获,调试器也退出.

在strace下运行,我得到:

munmap(0x7fa5b7fa6000, 67112960)        = 0
mmap(NULL, 67112960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5b7fa6000    
mmap(NULL, 67112960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5affa4000    
mmap(NULL, 67112960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5abfa3000    
mmap(NULL, 67637248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5a7f22000    
mmap(NULL, 67637248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa5a3ea1000    
mmap(NULL, 67637248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa59fe20000    
gettimeofday({1406518336, 306209}, NULL) = 0 …
Run Code Online (Sandbox Code Playgroud)

gdb out-of-memory sigkill python-2.7

5
推荐指数
1
解决办法
1954
查看次数

linux最大线程数

我使用以下代码来测试最大线程数,但这很奇怪。

import java.util.concurrent.atomic.AtomicInteger;

public class TestThread extends Thread {
    private static final AtomicInteger count = new AtomicInteger();

    public static void main(String[] args) {
        try{
            while (true) {
                (new TestThread()).start();
            }
        } catch (Error | Exception e) {
            System.out.println(e.getMessage());
        }
    }

    @Override
    public void run() {
        System.out.println(count.incrementAndGet());
        while (true)
            try {
                Thread.sleep(Integer.MAX_VALUE);
            } catch (InterruptedException e) {
                break;
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

操作系统为ubuntu:18.04,内存为4G,处理器数为2。JDK:openjdk1.8.0_252

java -Xss1m -Xms1024m -Xmx1023m TestThread

java -Xss512k -Xms1024m -Xmx1023m TestThread

java -Xss1m -Xms2048m -Xmx2048m TestThread

结果,线程数始终等于第 10000 个左右。

  1. 为什么结果是一样的。 …

java linux jvm

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

标签 统计

gdb ×1

java ×1

jvm ×1

linux ×1

out-of-memory ×1

python-2.7 ×1

sigkill ×1