K-GC
K-GC , 一个 为 ILBC / D++ 写 的 GC 。
一个简单的 GC 模型尝试 。
https://github.com/kelin-xycs/K-GC
K-GC 架构下, 中间代码(C 语言代码) 在 引用赋值时, 会记录对象的引用关系, 这样做的目的是为了让 GC 工作时可以随时暂停, 比如 K-GC 工作时, 扫描了 1000 个对象, 还没扫描完, 还有 800 个 对象, GC 可以停下来, 让应用程序接着运行, 下次 GC 启动接着扫描回收 。
一般的 GC 在 扫描 时 是 不能 暂停 的, 必须 把 扫描全部做完 才能 挂起 GC, 让 应用程序 线程 运行 。 如果 GC 中途 停止扫描, 让 应用程序 线程 运行, 那 这次 扫描白做, 下次 GC 启动 要 从头重新扫描一遍 。
K-GC 虽然可以随时暂停扫描, 下次运行接着扫描, 但 也 因为这样, K-GC 的 性能 不太高 。
为什么要做 GC 暂停扫描 这方面的 研究尝试 ? 因为 ILBC / D++ / K-GC 架构 有一个 目标, 就是 要 消除 GC 导致 应用程序 的 暂停(挂起) 。
在 ILBC / D++ / K-GC 架构 的 研究中, 还提出了 Pool 和 Bag 的 概念, Bag 是 一个 独立的 内存区域, 在 这个 内存区域 内, 可以 分配空间, 创建对象, 建立 对象图, Bag 有 自己的 GC, 管理回收 对象图 。
Bag 的 GC 可以由 程序员 自己 来写 。
一个 Bag 同一时间 只能 有一个 线程 使用, 因此, 对 Bag 的 使用要 加锁 (Lock) 。
GC 和 应用线程 之间 也通过 Lock 来 互斥, 使用 Bag 。 GC 要 扫描回收 Bag 时, 先尝试获得 Bag 的 锁, 如果 Bag 正被 应用线程 使用, 则 GC 转入等待(可能是 挂起 或 自旋 或 别的什么, 你们看着办吧), 下次启动时 同样 先尝试获得 Bag 的 锁, 如果 Bag 未被 应用线程 使用, 则 GC 获得 Bag 的 锁, 开始 扫描回收, GC 占有 Bag 的 锁 的 期间, 应用线程 不能获得 Bag 的 锁, 也就不能使用 Bag 。
也可以在 应用线程 内 直接 启动 和 运行 GC, 这样 GC 就不用尝试获得锁, GC 直接 运行在 应用线程 里 。
有了 Bag, 同学们 就可以 绕过 代码帧 、多核 、多线程挂起 等等 底层 、复杂 、精细 、高深 、“内幕” 的 技术, 不用被 庞大 的 技术资料 和 权威 吓倒, 可以 自由的 自己写 一个 自己的 GC , 发展 计算机语言 。
嘿嘿, 我是不是 把 秘密 都 告诉 你们 了 ?
当你们看到 Unity3D 、IL2Cpp 、LLVM 、PostgreSql 玩得那么酷, 再看看 Z GC 那么 复杂 的 设计 和 实现逻辑 和 底层技术 以及 厚厚 的 技术资料 和 背景, 你们 要 怎么 追赶 它们 呢 ?
我这里 有 答案 。
再看看 GoLang 的 不上不下, 再看看 Rust “下一代系统编程语言” 的 主流地位 日渐确立, C++ 也对 Rust 无可奈何, 只有 长辈 的 份, 没有 批评指教 的 份, 你们 要 怎么 追赶 它们 呢 ?
我这里 有 答案 。
GC 和 协程 的 背后代表的, 是 计算机语言 在 当代 要 解决的问题, 包括 内存管理 、多核数据同步 、IO 、线程池 、高并发 、协程优先级评估计算 、多核均衡利用 。
分级存储 对 应用程序运行效率 的 影响 和 内存管理 (堆 / 栈) 的 应对策略 。
分级存储 是 CPU 一级 Cache 、二级 Cache 、三级 Cache 、内存 、虚拟内存 。
这些问题 解决在当代, 谋划在未来, 对 计算机架构 的 未来 影响深远 。
百度 的 专家们, 你们能解决这些问题吗 ? 作好准备了吗 ?
再看看 .Net / C# 的 冲昏头脑 。
Java 以前诟病比较多, 现在看起来还行, (是不是从 java 5 开始版本号变大, 风水就转了) , 也在进化发展, 就是背的历史包袱有点重, 包括 技术 和 思想观念 的 历史包袱 。 JVM 从新写一个算了 。
.Net 几年前就在搞移动端 Xamarin , 现在搞到哪里去了 ?
《《 有计算机民科吗?我想给golang写个类似EF的ORM框架》 回复》 https://www.cnblogs.com/KSongKing/p/17483285.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2020-06-16 看了一下 复变函数 黎曼曲面 流形 复流形 仿射空间 射影空间