gpt4 book ai didi

python - 为什么 python 没有垃圾收集器线程?

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:01 24 4
gpt4 key购买 nike

Java 有守护线程来监视内存使用情况并执行 gc 任务。从 jstack 我看到

"main" #1 prio=5 os_prio=0 tid=0x00007f34b000e000 nid=0x808 waiting on condition [0x00007f34b6f02000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
....
"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f34b0023000 nid=0x809 runnable
"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f34b0024800 nid=0x80a runnable
"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f34b0026800 nid=0x80b runnable

但是说到python,我写了一个

#!/usr/bin/env python
import gc
import time
gc.enable()
while True:
print "This prints once a minute."
time.sleep(60)

我看到python进程只有一个线程,

$ cat /proc/1627/status
Name: python
...
Threads: 1

问题来了,为什么python没有Java那样的gc线程呢?那么哪个线程做gc任务呢?

最佳答案

如果您使用 -XX:+UseSerialGC 选项启动 java,您将看不到任何 GC 线程。对于单线程 GC 算法,应用程序线程可用于执行 GC 事件。

需要专用线程

  • 并行 GC(您需要的不仅仅是单线程)
  • 并发 GC(GC 事件与应用程序逻辑并行运行)

关于python - 为什么 python 没有垃圾收集器线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38651571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com