1
abc950309 2017-02-09 17:53:43 +08:00
刚刚重启完电脑,表示不作死就不会死…………
这是什么原理啊………… |
2
sleshep 2017-02-09 17:57:42 +08:00 2
bytes 输入数字表示创建一个长度为此数字的缓冲区,
当前时间戳很大,所以缓冲区很大,不就内存溢出了, 那不叫泄露,不要乱写标题 |
3
binux 2017-02-09 18:03:19 +08:00 2
python3 的 bytes(n) 的意思是,创建一个 size 为 n 的对象
|
4
karlakte 2017-02-09 18:07:15 +08:00 2
这就嘬死 不叫泄漏
|
5
phrack 2017-02-09 18:11:16 +08:00 via Android
申请太多内存了。
也遇到过,感兴趣的是,为什么没有一个机制强行停止这个操作,当时一执行直接爆炸,按啥都没卵用。 |
6
BruceAuyeung 2017-02-09 18:24:51 +08:00 via Android
@phrack ulimit
|
7
aprikyblue 2017-02-09 18:26:29 +08:00
你先查查啥叫内存泄漏
|
8
Mirana 2017-02-09 18:56:14 +08:00
oom?
|
9
ericbize 2017-02-09 18:57:41 +08:00
|
10
yanchao7511461 2017-02-09 18:58:45 +08:00
应该是内存耗完,不是泄漏
|
11
ericbize 2017-02-09 19:00:07 +08:00
楼主,要 python 3 吗 ?
|
12
longaiwp 2017-02-09 19:18:14 +08:00
这是个鬼泄露啊,这明显是申请过多好嘛
|
13
est 2017-02-09 19:26:48 +08:00
1. 你 bytes() 姿势不对
2. 有不爆炸的内存泄露吗? |
14
a87150 2017-02-09 19:37:37 +08:00
我还以为是什么 bug ,原来是自己作死
|
15
wxjeacen 2017-02-09 20:04:18 +08:00
确实是自己作死。
|
16
weyou 2017-02-09 21:05:33 +08:00 via Android
没炸伤就好~
|
17
kn007 2017-02-09 21:09:22 +08:00
作死溢出。。
|
18
lhbc 2017-02-09 21:15:43 +08:00 1
楼主你穿越回 1970 年 1 月 1 号就没有这个 bug 了
|
19
neurocomputing 2017-02-09 21:23:14 +08:00
是啊,这不叫泄露,这叫作死
|
20
napsterwu 2017-02-09 21:33:40 +08:00
也就 1.5 个 G ?其实还好吧
|
21
j5shi 2017-02-09 21:34:58 +08:00 via iPhone
现在有太多没有计算机背景的“程序员”,对计算机底层一窍不通,并对发明轮子乐此不疲。
|
22
JRight 2017-02-09 21:36:17 +08:00
楼主不要太受打击哈,慢慢进步~
|
23
F0nebula 2017-02-09 23:17:20 +08:00
|
24
wohenyingyu02 2017-02-10 00:00:09 +08:00 via iPhone
@j5shi 我学计算机的同学都没有当程序员……
|
26
enenaaa 2017-02-10 09:36:36 +08:00
win7 4G 内存,只是内存耗尽卡顿一段时间。
这样看来还是 windows 稳啊 |
27
Citrus 2017-02-10 09:55:56 +08:00
If it is an integer, the array will have that size and will be initialized with null bytes.
所以也就是 1486656000 bytes 差不多 1.384556293 GB ,不会炸啊=。= |
28
j5shi 2017-02-10 10:27:19 +08:00 via iPhone
@wohenyingyu02 不懂你在说什么,我可没说学计算机的都要去当程序员。
|
29
j5shi 2017-02-10 10:29:22 +08:00 via iPhone
@sl0000 比如不懂 C (或者 Clang 的)的就可以称为“没有计算机背景”。异或可以这么理解,能把这个称为“内存泄露”的,就是没有计算机背景。
|
30
wohenyingyu02 2017-02-10 10:33:12 +08:00
@j5shi 学计算机的都不去当程序员,自然只能没有背景的当。我就是你说的那种“程序员”,我学会计法律的,但是我比我认识的大多数学计算机的同学都混得好,可能是因为我学校烂吧。
|
31
xvx 2017-02-10 10:36:09 +08:00 via iPhone
这叫内存泄漏……
|
32
ericbize 2017-02-10 10:46:03 +08:00
@F0nebula python 3.5 一直在跑没死机 (我的不是虚拟机)
<a href="http://imgur.com/B04dVyO"><img src="" title="source: imgur.com" /></a> <a href="http://imgur.com/a2pgZV8"><img src="" title="source: imgur.com" /></a> 没事啊,就是不知道要跑到什么时候 楼主,有升级内存的理由了 。 |
33
ericbize 2017-02-10 10:51:35 +08:00
|
34
treo 2017-02-10 10:52:20 +08:00
100 年后、 1000 年后的计算机碰到这种场景还会卡顿吗
换句话说,计算机性能的增长能赶上 timestamp 的增长速度吗 |
35
j5shi 2017-02-10 10:52:54 +08:00 via iPhone
@wohenyingyu02 我可没说计算机背景指的是
需要 CS 相关教育经历,你缺的是自信。 |
37
chez 2017-02-10 11:10:46 +08:00
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module> print(b_time) MemoryError python3.6 就报个内存错误 |
38
ryd994 2017-02-10 11:12:56 +08:00
难道我用的是假 Python ?还是说我用的假 Linux ? Fedora 说这锅 Python 不背
@treo 你想多了,早就根本不虚了。因为有黑科技叫 overcommit 。 kernel 早就看穿了你们分配了这么多内存一定用不完 |
39
nilai 2017-02-10 14:11:30 +08:00
python3 测试有效。
|
41
lostsquirrelX 2017-02-10 14:35:50 +08:00
应该是死在 print 上面
|
42
Felldeadbird 2017-02-10 14:56:32 +08:00
有意思!弄成恶作剧发给同事、
|
43
hezhile 2017-02-10 15:06:25 +08:00
Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information. >>> import time >>> b_time = bytes(int(time.time())) >>> print(b_time) Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> print(b_time) File "C:\Users\gilot\AppData\Local\Programs\Python\Python35\lib\idlelib\PyShell.py", line 1343, in write return self.shell.write(s, self.tags) OverflowError: cannot serialize a string larger than 4GiB >>> 在 process explorer 里面, pythonw.exe 的 private bytes 确实飙升到了 7.3G (我的电脑内存只有 8G ) 操作系统是 win10 pro ,有大概 10 秒钟的时间整个系统没有反应 |
44
wuruxu 2017-02-10 15:23:00 +08:00
怎么爆炸了,一点反应也没有
``` xyz@debian:~$ python Python 2.7.9 (default, Jun 29 2016, 13:08:31) [GCC 4.9.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import time >>> b_time = bytes(int(time.time())) >>> print(b_time) 1486711277 >>> ls Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'ls' is not defined >>> xyz@debian:~$ ``` |
45
kkk330 2017-02-10 15:50:36 +08:00 via iPhone
就像 38 楼说的,我也记得 Linux 下内存或者硬盘空间都可以申请超过实际大小(并不会真的分配给你,感觉炸了说不通啊
|
46
langjiyuan 2017-02-10 20:49:51 +08:00
已 get 可以忽悠 有些自大的舍友去调试了
|
47
zhjits 2017-02-11 14:03:12 +08:00
http://imgur.com/a/r14mh
这个内存泄漏可能是真的…… |
48
zhjits 2017-02-11 14:05:01 +08:00
|
49
zhjits 2017-02-11 14:10:34 +08:00
|
50
q397064399 2017-02-11 21:45:56 +08:00
内存泄露是指程序申请的堆内存没有被正常回收导致内存泄露
|
51
Khlieb 2017-02-12 08:50:35 +08:00 via Android
熊叔: boom
|
52
cxbats 2017-02-12 11:32:10 +08:00 via Android
这也叫泄漏?那 malloc(1000000000) 是不是也叫内存泄漏
|