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 年前32.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 年前3Java 应用与开发 - 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 年前3C++高性能并行编程与优化 - 课件 - 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 年前3C++高性能并行编程与优化 - 课件 - 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 年前3C++高性能并行编程与优化 - 课件 - 08 CUDA 开启的 GPU 编程
API 和这个很像,但毕竟没有 CUDA 可以直接在核函数里调用核函数并指定参数这么方便…… 不过,这个功能同样需要开启 CUDA_SEPARABLE_COMPILATION 。 第 2 章:内存管理 如何从核函数里返回数据? • 我们试着把 kernel 的返回类型声明为 int ,试 图从 GPU 返回数据到 CPU 。 • 但发现这样做会在编译期出错,为什么? • 刚刚说了 kernel 访问,结果还是失败了。 原因: GPU 使用独立的显存,不能访问 CPU 内存 • 原来, GPU 和 CPU 各自使用着独立的内 存。 CPU 的内存称为主机内存 (host) 。 GPU 使 用的内存称为设备内存 (device) ,他是显卡上板载 的,速度更快,又称显存。 • 而不论栈还是 malloc 分配的都是 CPU 上的内存 ,所以自然是无法被 GPU 访问到。 • 因此可以用用 cudaMalloc 反之亦然, CPU 也不能访问 GPU 的内存地址 • 你可能已经迫不及待想通过 *pret 访问其 返回值了。但是不行,因为 GPU 访问不 了 CPU 的内存地址,同理, CPU 也访 问不了 GPU 的内存地址。一访问 CPU 就奔溃了。 跨 GPU/CPU 地址空间拷贝数据 • 因此可以用 cudaMemcpy ,他能够在 GPU 和 CPU 内存之间拷贝数据。 • 这里我们希望把0 码力 | 142 页 | 13.52 MB | 1 年前3简明 X86 汇编语言教程
.........................................................................................6 第三章 操作内存................................................................................................... .........................................................................................16 3.3 操作内存................................................................................................... ....................................................................................21 3.5 关于保护模式中内存操作的一点说明.................................................................22 3.6 堆栈.................0 码力 | 63 页 | 598.28 KB | 1 年前3美团点评2018技术年货
LruCache在美团DSP系统中的应用演进 22 ...................................................................... Netty堆外内存泄露排查盛宴 32 ...................................................................... Oceanus:美团HTTP流量定制化路由的实践 表,其在数据库里的存储为 “1,2,3,4…… ”这样字符串。而这种数据存储在业务请求和条件过滤过程中, 存在着如下两个问题: a. 大数据存储对内存的消耗 a. 大数据存储对内存的消耗 美团、大众点评运营的城市成千上万,如果每条运营的投放数据都包含大量的城市列表信息,对机器内存 势必产生一定消耗。 b. 过滤性能问题 b. 过滤性能问题 城市的过滤逻辑大体是这样:用户所在城市与从数据库获取到的城市列表(“1 过BitSet的get机 APPKIT打造稳定、灵活、高效的运营配置平台 - 美团技术团队 制就可以判断运营投放的城市是否包含了用户所在的城市。通过BitSet机制,我们既解决了大数据存储对 内存的消耗问题,又解决了城市过滤的性能问题。 4.2 服务层 4.2 服务层 服务层向下对底层数据进行操作;向上为接入层获取数据提供接入能力。其提供四个服务能力:运营后 台、开放平台、数据服务、APPKIT-SDK,如下表所列:0 码力 | 229 页 | 61.61 MB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
第39章:其它并发同步技术 - 如何使用sync标准库包 第40章:原子操作 - 如何使用sync/atomic标准库包 第41章:Go中的内存顺序保证 第42章:一些常见并发编程错误 内存相关 第43章:内存块 第44章:关于Go值的内存布局 第45章:一些可能的内存泄漏场景 一些总结 第46章:一些简单的总结 第47章:关于Go中的nil 第48章:类型转换、赋值和值比较规则大全 第49章:Go中的一些语法/语义例外 一个持有积极的学习态度的Go新手程序员可以在一年内精通Go编程。 那你觉得Go的卖点是什么呢? 我个人的观点是,做为一门静态语言,Go却和很多动态脚本语言一样得灵活是 Go的主要卖点。 节省内存、程序启动快、代码执行速度快和编译速度快合在一块儿是Go的另一 个主要卖点。 虽然这三项是C家族语言的共同特征,但是在Web开发领域,很 少有语言同时拥有这四个特征。 事实上,这就是我当初从Java转到Go进行Web 章揭示了某些类型的底层结构,从而使得Go程序员可以更深入地理解这些 类型的值。 我认为知道一些可能的底层实现对于清除某些Go编程中的困惑 非常有帮助。 3. 详细地解释了内存块(memory block)。 了解Go值和内存块之间的关系对 于理解垃圾收集器是如何工作的以及如何避免内存泄漏非常有帮助。 4. 将接口值视为用于包裹非接口值的盒子。 我发现将接口值视为用于包裹非 接口值的盒子对于清除很多和接口相关的困惑非常有帮助。0 码力 | 608 页 | 1.08 MB | 1 年前3
共 295 条
- 1
- 2
- 3
- 4
- 5
- 6
- 30