当前位置:首页>python>Python&Java垃圾回收机制对比

Python&Java垃圾回收机制对比

  • 2026-08-18 23:10:42
Python&Java垃圾回收机制对比

一、核心机制

Python(CPython)

Python 采用 "引用计数为主 + 分代标记-清除为辅" 的双轨制:

  • • 引用计数:每个对象的 ob_refcnt 实时记录引用数,归零时立即释放
  • • 分代 GC:仅处理容器对象(list、dict、自定义类实例等)的循环引用,是一个"补丁"角色。
  • • 原子类型(int、str 等)不参与分代 GC,完全由引用计数管理。

Java(HotSpot JVM)

Java 采用 "纯可达性分析" 的单机制:

  • • 不维护引用计数。垃圾回收完全依赖从 GC Roots 出发的可达性分析。
  • • GC Roots 包括:虚拟机栈引用、静态变量、常量池引用、JNI 引用等。
  • • 对象回收时机不确定,完全由 GC 收集器在特定条件下触发。

一句话概括

Python 像"随时擦桌子的主人"(引用计数立即清理),JVM 像"定期大扫除的保洁团队"(按策略批量回收)。


二、对象头与内存开销

维度
Python(CPython)
Java(HotSpot)
头部结构PyGC_Head
 含 _gc_next_gc_prev(各 8 字节)+ ob_refcnt(8 字节)+ ob_type(8 字节)
Mark Word(8/4 字节)+ Klass Pointer(8/4 字节,压缩后可 4 字节)
关键字段ob_refcnt
 引用计数(必须存在)
Mark Word 存哈希码、GC 年龄(4 bit)、锁状态、偏向锁等
额外开销
——每个对象都要维护引用计数 + 双向链表指针
——对象头紧凑,无引用计数字段
GC 专用空间_gc_prev
 可被复用(存储标志位 PREV_MASK_COLLECTING_PyGC_PREV_MASK_FINALIZED
Mark Word 在 GC 时复用存储转发指针(用于复制/整理)

Python 对象内存布局(默认构建)

              +----------------------------------+ \
              |             *_gc_next            | |
              +----------------------------------+ | PyGC_Head(仅容器对象)
              |             *_gc_prev            | |  ← 可复用:存 flag + gc_ref
object -----> +----------------------------------+ /
              |             ob_refcnt            | \  ← 引用计数(必须)
              +----------------------------------+ | PyObject_HEAD
              |             *ob_type             | |
              +----------------------------------+ /
              |                ...               |

为什么 Python 不能像 Java 一样放弃引用计数?

历史包袱 + C 扩展生态。NumPy、PyTorch 等 C 扩展高度依赖引用计数的确定性来及时释放非内存资源(GPU 显存、文件句柄)。如果改成纯标记-清除,这些扩展的内存管理会极其复杂。


三、分代回收机制

共同点

都基于弱代假说(Weak Generational Hypothesis):绝大多数对象"朝生夕死"。

Python 分代

特性
说明
分代数量
3 代(generation 0 / 1 / 2)
默认阈值
早期版本为 (700, 10, 10);Python 3.13+ 将 threshold0 提高至 (2000, 10, 10)
触发条件
当 allocations - deallocations > threshold0 时触发 gen0 扫描
晋升规则
每次 GC 存活 → 升一代;gen2 对象不再晋升
扫描范围
gen0 最频繁(只有新对象),gen1 稍少,gen2 很少——gen2 仅在 long_lived_pending / long_lived_total > 25% 时扫描
free-threaded 构建不使用
分代,每次扫描整个堆

Java 分代(以 HotSpot 为例)

特性
说明
分区模型
新生代(Young:Eden + S0 + S1)+ 老年代(Old)+ 元空间(Metaspace,JDK 8+)
默认比例
Eden : S0 : S1 = 8 : 1 : 1(-XX:SurvivorRatio=8
触发条件
Eden 满 → Minor GC / Young GC;老年代满 → Major GC / Full GC
晋升规则
对象在 S0/S1 每存活一次 Minor GC,年龄 +1;默认 15 岁升入老年代(-XX:MaxTenuringThreshold=15
GC 类型
Minor GC(仅新生代)、Major GC(老年代)、Full GC(整个堆 + Metaspace)

Python vs Java 分代对比表

对比项
Python
Java
分代数量
3 代
2 物理区 + 元空间
物理分隔
无——仅逻辑链表分代
有——Eden/S0/S1/Old 物理隔离
复制算法
新生代使用复制(Eden→S0/S1)
回收频率控制
简单阈值计数
多级阈值 + 动态自适应(Ergonomics)
复杂度
极低
极高

四、GC 算法细节

Python 循环引用检测

Python 的循环 GC 是一个三步骤的标记清除过程:

  1. 1. 计算内部引用:复制所有容器对象的 ob_refcnt 到 gc_ref;遍历每个容器,将其引用对象的 gc_ref 减 1。
  2. 2. 识别不可达对象gc_ref == 0 的对象移入"暂定不可达"列表;再遍历可达对象,把被可达对象引用的对象"救回"可达列表。
  3. 3. 销毁不可达对象:处理弱引用回调 → 调用 __del__ / tp_finalize → 处理复活对象 → 调用 tp_clear 打破循环 → 释放内存。

Java GC 算法

算法
适用区域
说明
Mark-Sweep(标记-清除)
老年代
标记存活对象后清除未标记的。缺点:产生内存碎片;效率不高。
Copying(复制)
新生代
将存活对象从 Eden/S0 复制到 S1/S0,清空原区。优点:无碎片,只需移动指针。代价:浪费一半空间(S0/S1 互备)。
Mark-Compact(标记-整理)
老年代
标记后把存活对象移动到内存一端,清理边界外。优点:无碎片。代价:移动成本高,STW 时间长。
Generational(分代)
整体策略
上述算法的组合使用——新生代用复制,老年代用清除/整理。

Python vs Java GC 算法核心差异

维度
Python
Java
主要清理方式
引用计数(实时、分散)
GC 收集器(批量、集中)
GC 算法
标记-清除(仅循环检测)
标记-清除 / 复制 / 标记-整理 / 分代组合
内存碎片
由 obmalloc 的 arenas/pools/blocks 管理,基本避免碎片
取决于收集器:复制算法无碎片;标记-清除可能产生碎片
并发/并行
——GC 执行时持有 GIL,阻塞所有线程
现代收集器(G1/ZGC)支持并发标记、并发整理

五、底层内存分配器

Python:obmalloc(基于 malloc)

Arena(256KB 对齐)
  ├── Pool 1(4KB,同一 size class)
  │     ├── Block 48B
  │     ├── Block 48B
  │     └── ...
  ├── Pool 2
  └── ...
  • • Arena:最大分配单元(256KB),按页边界对齐。空闲 Arena 可以真正归还 OS。
  • • Pool:一个虚拟内存页(4KB),所有 block 属于同一 size class。
  • • Block:最小分配单元,size class 从 8B ~ 512B。大于 512B 直接调 malloc
  • • freepools / usedpools:管理空闲/使用中的 Pool 链表。

Java:TLAB + 堆分区

  • • TLAB(Thread Local Allocation Buffer):每个线程在 Eden 区有独立小缓冲区,避免锁竞争。
  • • 堆分区:Eden 区大块连续分配(指针碰撞 Bump-the-Pointer)。
  • • 大对象直接进老年代(-XX:PretenureSizeThreshold)。

对比

维度
Python
Java
设计目标
优化大量小对象分配(Python 一切皆对象)
优化高吞吐并发分配
线程安全
依赖 GIL 保证
TLAB + CAS 无锁分配
大对象处理
>512B 走 malloc
直接进入老年代
内存归还 OS
Arena 级归还
取决于收集器(G1 可归还、Shenandoah/ZGC 更好)

六、GC 收集器对比

Python:只有一个 GC 实现(两个变体)

构建类型
特点
默认构建(GIL)
分代收集,依赖 GIL 保证线程安全
free-threaded 构建(3.13+)
非分代(每次全堆扫描),有两次"Stop The World"暂停来暂停其他线程

Python 的 GC 没有并发收集器,没有增量收集器,也没有低延迟收集器。执行 GC 时 GIL 被持有,所有 Python 线程阻塞。

Java:多款工业级收集器

收集器
算法特点
目标
STW 时间
Serial
单线程标记-复制(新生代)+ 标记-整理(老年代)
客户端/小应用
全程 STW
Parallel Scavenge
多线程复制 + Parallel Old(标记-整理)
吞吐量优先(JDK 8 默认)
全程 STW,但多线程并行
CMS
并发标记-清除
低延迟(JDK 9 废弃,JDK 14 移除)
仅初始标记+重新标记 STW
G1
分区 Region + 并发标记 + 混合回收
平衡吞吐与延迟(JDK 9+ 默认)
可控目标暂停 -XX:MaxGCPauseMillis
ZGC
染色指针 + 并发整理
亚毫秒级暂停(JDK 15+ 生产)
<1ms(与堆大小无关)
Shenandoah
布鲁克斯指针 + 并发整理
低延迟
与堆大小近乎无关

七、调优与工具

Python

组件
说明
gc
 模块
gc.set_threshold(t0, t1, t2)
gc.disable()gc.collect()
gc.get_stats()
获取各代统计信息(collections、collected、uncollectable)
gc.DEBUG_LEAK
打印泄漏对象信息
gc.freeze()
冻结对象到永久代(fork 前用,避免 copy-on-write)
gc.callbacks
注册 GC 回调
sys.getrefcount()
查看引用计数

调优空间极小。 基本只有调整 set_threshold 三参数或直接 gc.disable()

Java

组件
说明
收集器选择-XX:+UseSerialGC
 / -XX:+UseParallelGC / -XX:+UseG1GC / -XX:+UseZGC
堆大小-Xms
 / -Xmx / -Xmn
分代比例-XX:SurvivorRatio
 / -XX:NewRatio
晋升阈值-XX:MaxTenuringThreshold
GC 日志-Xlog:gc*
(JDK 9+)、-XX:+PrintGCDetails(JDK 8)
监控工具
jps / jstat / jvisualvm / MAT / Arthas / GCViewer
调优参数上百个
(如 -XX:MaxGCPauseMillis-XX:GCTimeRatio-XX:ParallelGCThreads-XX:ConcGCThreads 等)

调优空间极大。 选择合适的收集器 + 调优参数可以显著影响性能。


八、Stop The World(STW)与并发性

维度
Python
Java
STW 范围
整个解释器
——GC 持有 GIL 时,所有 Python 线程阻塞
取决于收集器——现代收集器阶段性 STW,且只暂停 Java 线程
GC 并发
——GC 代码不可与 Python 代码并发
——CMS、G1、ZGC 支持并发标记和并发整理
对多线程影响
严重
——GIL 意味 GC 期间所有线程停顿
可控
——ZGC 可实现亚毫秒级 STW
free-threaded(3.13+)
GC 时暂停所有其他线程("Stop The World"),但暂停时间通常很短
同上

九、循环引用处理

维度
Python
Java
发现机制
引用计数无法处理 → 依靠分代 GC 的循环检测算法
可达性分析天然解决——不可达的环整体回收
处理时机
分代 GC 触发时(通常 gen0 -> gen1 -> gen2 晋升)
取决于 GC 周期,不可达环一次性整体清理
弱引用
weakref
 模块,支持回调;不可达时 GC 负责清除
WeakReference
 / SoftReference / PhantomReference + ReferenceQueue

十、Python 特有机制

1. 延迟 untrack(Delayed Untracking)

某些容器类型确定不能参与循环引用时,GC 会将其"untrack"(从跟踪链表中移除):

  • • Tuple:创建时先跟踪,GC 周期中检查——如果所有元素不可跟踪,则 untrack。
  • • Dict(3.14+):始终跟踪,不再懒跟踪(3.13 及之前用 _PyDict_MaybeUntrack 在 Full GC 时检查)。

2. 冻结机制(Freeze)

gc.freeze() 将所有已跟踪对象移入"永久代",后续 GC 不再扫描。用于 fork() 场景——避免子进程 GC 污染父进程对象的内存页(copy-on-write)。

3. free-threaded 构建(3.13+)

  • • 无 GIL 的多线程 Python。
  • • GC 不分代(每次全堆扫描)。
  • • 对象中使用 ob_gc_bits(1 字节标志位)取代 PyGC_Head
  • • 使用 mimalloc 扫描堆发现已跟踪对象。
  • • 软件预取(Software Prefetch)优化"标记存活对象"阶段(长生命周期对象 >200K 时启用)。
  • • 两次"Stop The World"暂停,暂停所有其他线程。

十一、综合对比总表

对比维度
Python(CPython)
Java(HotSpot)
主力机制
引用计数(实时清理)
可达性分析(按需清理)
辅助机制
分代标记-清除(处理循环引用)
—(主机制直接处理)
内存释放时机立即、确定
(引用归零即释放)
延迟、不确定
(等待 GC 触发)
分代数量
3 代(逻辑链表)
2 物理代(Young/Old)+ Metaspace
GC 算法
标记-清除(单纯)
复制 + 标记-清除 + 标记-整理(多种组合)
对象头开销
(引用计数 + GC 链表 + 类型指针)
(Mark Word + Klass Pointer)
收集器选择
无——只有一个实现
6+ 种收集器(Serial / Parallel / CMS / G1 / ZGC / Shenandoah)
并发 GC
无(GIL 阻塞所有线程)
有(并发标记 + 并发整理)
STW 时间
取决于对象数量(通常毫秒级)
亚毫秒级(ZGC)到秒级(Serial GC)
内存分配器obmalloc
(arenas/pools/blocks,专为小对象优化)
TLAB + 指针碰撞 / 空闲列表
循环依赖处理
分代 GC 的循环检测算法(三步骤)
主 GC 统一处理
调优难度极低
(只有 gc.set_threshold
极高
(上百个参数,多款收集器可选)
弱引用weakref
 模块
WeakReference
 / SoftReference / PhantomReference
Finalizer__del__
 + tp_finalize(PEP 442)
finalize()
(JDK 9 已废弃,推荐 Cleaner
监控工具gc
 模块 + sys.getrefcount
jps / jstat / jvisualvm / MAT / Arthas
设计哲学简单、实时、兼容 C 扩展极致吞吐量 / 低延迟、服务端优化

十二、实战启示

  1. 1. Python 中 不是删除对象——是减少引用计数。对象何时真正释放取决于引用计数是否归零,以及循环引用是否被 GC 检测到。
  2. 2. Python 不需要手动触发 GC——引用计数已经处理了绝大多数对象,gc.collect() 仅在需要追踪内存泄漏或处理大量循环引用时使用。
  3. 3. Python 中循环引用不会被立即回收——必须等待分代 GC 触发。这也是为什么 weakref 在某些场景下很重要。
  4. 4. Java 需要选对收集器——批处理/服务端应用:Parallel GC(吞吐量优先);Web 服务:G1(平衡延迟);低延迟系统:ZGC(亚毫秒级暂停)。
  5. 5. Java 调优需要看 GC 日志——-Xlog:gc* 是必备参数;GC 日志分析是 Java 性能优化的核心技能。

十三、参考资料

  • • Python GC 模块官方文档
  • • CPython 垃圾回收器设计文档
  • • Real Python - Memory Management in Python
  • • 《深入理解Java虚拟机》(周志明)
  • • 美团技术 - G1 GC
  • • Java GC 调优指南
欢迎点赞加关注,一起聊聊ai那些事

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:39:48 HTTP/2.0 GET : https://f.mffb.com.cn/a/505508.html
  2. 运行时间 : 0.346274s [ 吞吐率:2.89req/s ] 内存消耗:4,678.44kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=09592ec5557e81d3193bb3b5f64d5bc7
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001138s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001886s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000729s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000709s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001637s ]
  6. SELECT * FROM `set` [ RunTime:0.000589s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001998s ]
  8. SELECT * FROM `article` WHERE `id` = 505508 LIMIT 1 [ RunTime:0.001302s ]
  9. UPDATE `article` SET `lasttime` = 1787294389 WHERE `id` = 505508 [ RunTime:0.092142s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.008970s ]
  11. SELECT * FROM `article` WHERE `id` < 505508 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.017732s ]
  12. SELECT * FROM `article` WHERE `id` > 505508 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.002161s ]
  13. SELECT * FROM `article` WHERE `id` < 505508 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.012079s ]
  14. SELECT * FROM `article` WHERE `id` < 505508 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002590s ]
  15. SELECT * FROM `article` WHERE `id` < 505508 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.034922s ]
0.351991s