JVM 内存模型JVM 内存模型 Heap Method Area Runtime Constant Pool Thread Thread Thread PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method0 码力 | 1 页 | 48.42 KB | 1 年前3
2.1.1 Golang主动式内存缓存的优化探索之路Golang主动式内存缓存的优化探索之路 安晏伯 学而思网校 技术专家 目 录 问题引入 01 难点攻克 02 主动式内存缓存框架 03 总结 04 问题引入 第一部分 为什么能有极致的性能? 01. 如何优化? 解决了哪些技术难题? 主动式内存缓存 如何优化? 极致的性能 除了网络IO,与Redis有什么区别? 复杂的查询怎么办? 02. 传统的Cache很难 支持灵活的信息过滤条件 内存不够用怎么办? 03. 冷热可交换、策略可定制、内存可扩展,多种冷数据淘汰组件,自由组合 存储扩展,冷热数据交换 可自定义冷热数据交换策略 还能提供什么帮助? 04. 降低硬件成本,降低依赖,保证稳定性 同样的性能,需要更少的硬件资源,降低成本 01 核心数据在本地,依赖少,更稳定 02 • 千万级内存对象,GC严重耗时,如何解决? • 复杂的查询场景,内存数据如何高效组织? 复杂的查询场景,内存数据如何高效组织? • 主动式内存缓存,如何保证数据实时性? • 数据太多,内存不够用,如何进行存储扩展? 通过本次分享,可以带来哪些收获? 难点攻克 第二部分 使用内存缓存 数据一致性如何保证? 一致性 01. 缓存如何保证更新,如何与数据库同步 同步、更新 被动方式 缓存过期 定期同步 主动方式 监听数据变化 数据加载,更新 02. 全量数据加载,增量数据监听0 码力 | 48 页 | 6.06 MB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 报告日期:2022.11.25 复旦大学 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 Rust语言 ❑ 系统级安全编程语言 ▪ 内存安全 ▪ 并发安全 ▪ 效率 2006年 2011年 Mozilla裁员Servo团队 AWS, Huawei, Google, Microsoft, Mozilla… Rust如何保障内存安全? ❑ 内存安全问题产生的主要原因之一是指针别名导致悬空指针 ▪ 手动释放内存或调用析构函数 ▪ 函数返回时发生的自动析构或内存释放 ❑ Rust设计的目标之一是编译时检查指针别名(共享可变引用) ▪ 但一般意义上的指针分析是NP-hard问题 ▪ 智能指针可行,但作为运行时方案,效率低 Unsafe API call Unsafe API access call Rust实际表现如何? ❑ 调研了2020年12月31日前报告的185个内存安全漏洞[TOSEM'21] ▪ Rust在内存安全防护方面效果不错 ▪ 所有的漏洞(除了1个编译器漏洞)都需要unsafe code ▪ 大部分CVEs都是 API soundness的问题(未在可执行程序中发现)0 码力 | 28 页 | 1.55 MB | 1 年前3
Java 应用与开发 - Java 内存模型与分配机制大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 应用与开发 Java 内存模型与分配机制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2. 理解 程序的运行过程,学会通过调试模式观察内存的 变化 3. 了解 Java 内存管理,认识垃圾回收 4. 建立编程时高效利用内存、避免内存溢出的理念 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 ���� Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 Java 虚拟机(Java Virtual Machine, JVM) ▶ Java 程序运行在 JVM 上,JVM 是程序与操作系统之间的桥梁。 ▶ JVM 实现了 Java 的平台无关性。 ▶ JVM 是内存分配的前提。 类装载子系统 Class文件0 码力 | 44 页 | 818.30 KB | 1 年前3
C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理现代 C++ 入门: RAII 内存管 理 by 彭于斌( github@archibate ) 往期录播: https://space.bilibili.com/263032155 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 8.GPU 专题: wrap 调度,共享内存, barrier 9.并行算法实战: nv 将多个逻辑上相关的变量包装成一个类 因此 C++ 的 vector 将他俩打包起来,避免程序员犯错 封装:不变性 比如当我要设置数组大小为 4 时,不能只 nv = 4 还要重新分配数组内存,从而修改数组起始地址 v 常遇到:当需要修改一个成员时,其他也成员需要被修改,否则出错 这种情况出现时,就意味着你需要把成员变量的读写封装为成员函数 不变性:请勿滥用封装 • 仅当出现“修改一个成员时,其他也成员要0 码力 | 96 页 | 16.28 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化com/parallel101/course 为什么往 int 数组里赋值 1 比赋值 0 慢一倍? 第 1 章:内存带宽 cpu-bound 与 memory-bound • 通常来说,并行只能加速计算的部分,不能加速内存读写的部分 。 • 因此,对 fill 这种没有任何计算量,纯粹只有访存的循环体,并 行没有加速效果。称为内存瓶颈( memory-bound )。 • 而 sine 这种内部需要泰勒展开来计算,每次迭代计算量很大的 这种内部需要泰勒展开来计算,每次迭代计算量很大的 循环体,并行才有较好的加速效果。称为计算瓶颈( cpu- bound )。 • 并行能减轻计算瓶颈,但不减轻内存瓶颈,故后者是优化的重点 。 浮点加法的计算量 • 冷知识:并行地给浮点数组每个元素做一次加法反而更慢。 • 因为一次浮点加法的计算量和访存的超高延迟相比实在太少了。 • 计算太简单,数据量又大,并行只带来了多线程调度的额外开销 。 • 小彭老师经验公式: 64 字节)所花费的时间。 • 根据计算: 125/64*4≈8 • 即从主内存读取一次 float 花费 8 个 cycle , 符合小彭老师的经验公式。 • “right” 和“ wrong” 指的是分支预测是否成功。 多少计算量才算多? • 看右边的 func ,够复杂了吧?也只是勉勉强强超过一 点内存的延迟了,但在 6 个物理核心上并行加速后, 还是变成 mem-bound 了。0 码力 | 147 页 | 18.88 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 10 从稀疏数据结构到量化数据类型课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 CFD 仿真、深度学习编程人 员 第 0 章:稀疏矩阵 稠密数组存储矩阵 用 foreach 包装一下枚举的过程 改用 map 来存储 分离 read/write/create node) ,而这里的 unordered_map 就是充当根节点 (root node) 。 图片解释稀疏的好处 传统稠密二维数组 无边界稀疏分块哈希表 此外,还是按需分配内存,即使被写入的部分奇形怪状也不会浪费内存。 这些被写入的部分被称为激活元素 (active element) ,反之则是未激活 (inactive) 。 这就是稀疏的好处,按需分配,自动扩容。 分块则是利用了我们存储的 (空指针) 图片解释:指针数组的稀疏 这样指针表中为 null 的部分,稠密叶节点的内存就省掉 了 垃圾回收 (garbage-collect) • 如果是运行的仿真,则液体可能会移动到 别的地方去。这时液体曾经存在过的地方 也仍然处于激活状态,可以每隔若干帧及 时释放掉这些不用的指针块以节省内存。 unordered_map 作为顶层,指针作为中层,稠密数组作为底层 • 实现稀疏的方法有:0 码力 | 102 页 | 9.50 MB | 1 年前3
FISCO BCOS 2.7.2 中文文档存储,支持 数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 • 网 网 网络 络 络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降 低带宽开销。 1.4 性 性 性能 能 能 为提升系统性能,FISCO BCOS从提升交易执行效率和并发两个方面优化了交易执行,使得交易处理性 能达到万级以上。 • 基 基 基于 于 于C++的 的 数据格式和通信协议的版本:通过配置文件 config.ini的supported_version配置项 获取 2.2.1 v2.7.2 变 变 变更 更 更描 描 描述 述 述 • 修复国密环境内存泄露问题 2.2.2 v2.7.1 变 变 变更 更 更描 描 描述 述 述 更 更 更改 改 改 • 完善fisco-sync工具,实现新节点加入群组时从数据仓库拉取指定块高快照数据的功能 源码编译要求GCC版本不小于5.4.0 • 支持AMOP消息路由到节点自身 • MySQL存储模式下区块等数据使用二进制存储并启动压缩 修 修 修复 复 复 • 修复因为交易广播标记缓存没有清理干净导致的轻微内存泄露问题 • 修复raft共识下,非leader节点交易池中的交易不能被打包的问题 • 在MySQL存储模式下,Solidity合约写接口中调用Table的select接口时,偶现的Gas计算不一致问题0 码力 | 1422 页 | 91.91 MB | 1 年前3
FISCO BCOS 2.9.0 中文文档SQL等多种后端存储,支持 数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 • 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降 低带宽开销。 1.4 性能 为提升系统性能,FISCO BCOS从提升交易执行效率和并发两个方面优化了交易执行,使得交易处理性 能达到万级以上。 • 基于C++的Precompiled合约:区块链底 0),硬件加密版(2.8.0-hsm),这两个版本均 与2.7.0等以前的版本兼容。 2.8.0和2.8.0-hsm向前兼容,旧版本可以直接替换程序升级 2.2.3 v2.7.2 变更描述 • 修复国密环境内存泄露问题 2.2. 更多版本 11 FISCO BCOS Documentation, 发布 v2.9.0 2.2.4 v2.7.1 变更描述 更改 • 完善fisco-sync工具,实 源码编译要求GCC版本不小于5.4.0 • 支持AMOP消息路由到节点自身 • MySQL存储模式下区块等数据使用二进制存储并启动压缩 修复 • 修复因为交易广播标记缓存没有清理干净导致的轻微内存泄露问题 • 修复raft共识下,非leader节点交易池中的交易不能被打包的问题 • 在MySQL存储模式下,Solidity合约写接口中调用Table的select接口时,偶现的Gas计算不一致问题0 码力 | 1489 页 | 107.09 MB | 1 年前3
FISCO BCOS 3.6.0 中文文档SQL等多种后端存储,支持 数据简便快速扩容的同时,将计算与数据隔离,降低了节点故障对节点数据的影响。 • 网络:支持网络压缩功能,并基于负载均衡的思想实现了良好的分布式网络分发机制,最大化降 低带宽开销。 1.4 性能 为提升系统性能,FISCO BCOS从提升交易执行效率和并发两个方面优化了交易执行,使得交易处理性 能达到万级以上。 • 基于C++的Precompiled合约:区块链底 0),硬件加密版(2.8.0-hsm),这两个版本均 与2.7.0等以前的版本兼容。 2.8.0和2.8.0-hsm向前兼容,旧版本可以直接替换程序升级 2.2.3 v2.7.2 变更描述 • 修复国密环境内存泄露问题 2.2. 更多版本 11 FISCO BCOS Documentation, 发布 v2.9.0 2.2.4 v2.7.1 变更描述 更改 • 完善fisco-sync工具,实 源码编译要求GCC版本不小于5.4.0 • 支持AMOP消息路由到节点自身 • MySQL存储模式下区块等数据使用二进制存储并启动压缩 修复 • 修复因为交易广播标记缓存没有清理干净导致的轻微内存泄露问题 • 修复raft共识下,非leader节点交易池中的交易不能被打包的问题 • 在MySQL存储模式下,Solidity合约写接口中调用Table的select接口时,偶现的Gas计算不一致问题0 码力 | 1489 页 | 107.09 MB | 1 年前3
共 302 条
- 1
- 2
- 3
- 4
- 5
- 6
- 31













