我写了一个代码来产生内存错误,但是当我在我的机器上本地运行它(即Mac OS)时,我能够得到内存错误,但是当我在分配了有限内存的docker python容器中运行此代码时,却没有抛出任何错误。我不知道为什么抱歉,如果您发现这只la脚。
这是代码:
def str_append(s):
output = ''
i = 0
for i in range(100000000000000000):
output += s
i = i + 1
print(sys.getsizeof(output))
return output.encode('latin1')
print(str_append(string).decode('latin1'))
Docker文件代码
FROM python:3.6
WORKDIR /usr/src/app
# Bundle app source
COPY /test2.py .
EXPOSE 8080
CMD ["python", "test2.py"]
首先,我使用docker build -t mypytest .
之后,我用docker run -m=23M -memory-swap=30M mypytest
但是当我检查统计信息时,它挂起但没有产生任何输出: Docker Stats After Running The Image
答案 0 :(得分:1)
它像这样
脚本:
import sys
def str_append(s):
output = ''
i = 0
for i in range(100000000000000000):
output += s
i = i + 1
print(sys.getsizeof(output))
return output.encode('latin1')
string = "hi"
str_append(string).decode('latin1')
2分钟后:
fc63c2658920 mypytest "python test.py" 56 seconds ago Exited (137) 9 seconds ago blissful_grothendieck
CPU和内存为100%
杀死时的大小为2609073726090737
PS 设置您的身份以进行打印,以便能够看到某些内容(例如我添加的代码中的内容)