<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>内存管理 | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《一次被低估的重构如何让内存暴降90%——TanStack_Table_V9内存优化揭秘》</title><link>https://channel.meo-ai.com/posts/669</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/669</guid><pubDate>Wed, 24 Jun 2026 00:55:25 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《一次被低估的重构如何让内存暴降90%——TanStack_Table_V9内存优化揭秘》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%89%8D%E7%AB%AF&quot; title=&quot;#前端&quot;&gt;#前端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23TanStackTable&quot; title=&quot;#TanStackTable&quot;&gt;#TanStackTable&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23JavaScript&quot; title=&quot;#JavaScript&quot;&gt;#JavaScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86&quot; title=&quot;#内存管理&quot;&gt;#内存管理&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;TanStack_Table_V9通过将行、列、单元格和表头对象的方法从实例属性迁移到共享原型上，实现了大型表格场景下最高达90%的内存节省。这一改动让V9能处理1000-1600万行数据（V8仅约150万行即达4GB内存上限），同时保持了动态特性组合的能力，仅带来解构方法调用这一处Breaking_Change。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;1. 数据亮眼：处理100万行×8列时，V9比V8节省超2.4GB内存，最高降幅达90.5%，表格承载能力从约150万行跃升至1000-1600万行&lt;br /&gt;2. 核心手法：用&lt;code&gt;Object.create&lt;/code&gt;创建共享原型对象，将方法统一挂载到原型上，实例只保留独有数据，彻底消灭百万级重复函数对象及其闭包作用域&lt;br /&gt;3. 不用类的智慧：因为TanStack_Table的特性是动态组合的（按需注册排序、筛选、分页等），单继承的Class难以优雅表达&quot;条件式多重继承&quot;，手动原型模式更灵活&lt;br /&gt;4. 唯一代价：方法不能再解构调用（如&lt;code&gt;const {getValue} = row&lt;/code&gt;会丢失&lt;code&gt;this&lt;/code&gt;），且&lt;code&gt;Object.keys&lt;/code&gt;/&lt;code&gt;{...row}&lt;/code&gt;浅拷贝不会包含方法，但直接调用&lt;code&gt;row.getValue()&lt;/code&gt;一切正常&lt;br /&gt;5. 通用启示：任何需要大规模创建相似对象的库或应用，都可以借鉴这种&quot;共享原型+实例数据分离&quot;的模式来优化内存&lt;br /&gt;&lt;br /&gt;URL：&lt;a href=&quot;https://tanstack.com/blog/tanstack-table-v9-memory-performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://tanstack.com/blog/tanstack-table-v9-memory-performance&quot;&gt;https://tanstack.com/blog/tanstack-table-v9-memory-performance&lt;/a&gt;&lt;a class=&quot;tgme_widget_message_link_preview&quot; href=&quot;https://tanstack.com/blog/tanstack-table-v9-memory-performance&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;TanStack Table V9 can use dramatically less memory than Table V8 in large tables because row, column, cell, and header APIs now live on shared prototypes instead of every object instance.&quot;&gt;
  
  &lt;div class=&quot;link_preview_site_name accent_color&quot;&gt;TanStack&lt;/div&gt;
  &lt;img class=&quot;link_preview_image&quot; alt=&quot;How an Underrated Refactor Saved 90% Memory Usage | TanStack Blog&quot; src=&quot;/static/https://cdn4.telesco.pe/file/FQR4dWdT67a_mrfmgslO0CoPOt1uPF9qp4F8BTsFLWmlywFDAsExdFNZYCIyVIuMR32QL6JqI_dNQNvT_cqPRq3Z08POFnQwxLPd6UPDChMQwE6M-Tg1-816k0pxJ_zTxFhDgGcpiTb_Bw_j8EpIOz6M1ES4k2A6G5igJGHog957qE7Om-B5AvS4OMM_NDm31tFv9dlBigA5xECcQ-1w3N8JdB09eOEuFeBSLEca2qLPUAlLfaMSiqZ4MIFnO08NbzGYayIXdGResk5VALsLVN6JviHAL7igp0z1bC6t_Vqu6RuJ4RdmpVXv_mvnPXmZNJg9bJxeM3cYwcUhUsEtCg.jpg&quot; width=&quot;1200&quot; height=&quot;630&quot; loading=&quot;eager&quot; /&gt;
  &lt;div class=&quot;link_preview_title&quot;&gt;How an Underrated Refactor Saved 90% Memory Usage | TanStack Blog&lt;/div&gt;
  &lt;div class=&quot;link_preview_description&quot;&gt;TanStack Table V9 can use dramatically less memory than Table V8 in large tables because row, column, cell, and header APIs now live on shared prototypes instead of every object instance.&lt;/div&gt;
&lt;/a&gt;</content:encoded></item><item><title>《我们将 Node.js 内存占用减少了一半》</title><link>https://channel.meo-ai.com/posts/562</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/562</guid><pubDate>Fri, 20 Feb 2026 08:07:13 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《我们将 Node.js 内存占用减少了一半》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23%E5%90%8E%E7%AB%AF&quot; title=&quot;#后端&quot;&gt;#后端&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Node&quot; title=&quot;#Node&quot;&gt;#Node&lt;/a&gt;.js &lt;a href=&quot;/search/result?q=%23V8&quot; title=&quot;#V8&quot;&gt;#V8&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96&quot; title=&quot;#性能优化&quot;&gt;#性能优化&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86&quot; title=&quot;#内存管理&quot;&gt;#内存管理&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Docker&quot; title=&quot;#Docker&quot;&gt;#Docker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;本文介绍了通过启用 V8 引擎的指针压缩（Pointer Compression）技术，在不修改代码的情况下将 Node.js 应用内存占用减少约 50%，且仅带来 2-4% 的平均延迟开销，同时显著降低 P99 延迟。Cloudflare 与 Igalia 合作解决了历史性的&quot;4GB 内存笼&quot;限制，使每个 Worker 线程拥有独立的 4GB 压缩内存空间。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;- 技术原理：指针压缩将 64 位指针转为 32 位偏移量，使每个指针从 8 字节减至 4 字节，内存占用减半，代价是每次堆访问需额外的加减法运算&lt;br /&gt;- 历史障碍：此前 Node.js 未默认启用是因所有 Worker 线程共享单一 4GB 内存空间，2024 年 Cloudflare 与 Igalia 合作推出 IsolateGroups 功能，使每个 V8 实例拥有独立的 4GB 压缩内存笼&lt;br /&gt;- 实验结果：在 Next.js 电商应用基准测试中，指针压缩实现内存减半（2GB→1GB），平均延迟仅增加 2.5-4.2%，但 P99 延迟降低 7-43%，最大延迟降低 6-38%，因更小的堆减少了 GC 暂停时间&lt;br /&gt;- 业务价值：可显著降低 Kubernetes 集群成本、提升多租户 SaaS 密度、支持边缘计算部署、增加 WebSocket 并发连接数&lt;br /&gt;- 兼容性限制：每个 V8 实例仍受 4GB 堆内存限制；使用旧版 NAN 的原生插件不兼容，但 Node-API 插件不受影响&lt;br /&gt;- 使用方式：通过 &lt;code&gt;platformatic/node-caged&lt;/code&gt; Docker 镜像一键替换官方 Node.js 镜像即可启用&lt;br /&gt;&lt;br /&gt;链接：&lt;a href=&quot;https://blog.platformatic.dev/we-cut-nodejs-memory-in-half&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://blog.platformatic.dev/we-cut-nodejs-memory-in-half&quot;&gt;https://blog.platformatic.dev/we-cut-nodejs-memory-in-half&lt;/a&gt;</content:encoded></item></channel></rss>