4) 0 码力 |
50 页 |
1.35 MB
| 2 年前 3 Java 内存模型与分配机制
王晓东
wangxiaodongQouc.edu.cn
中国海洋大学
September 30, 2018
Java 内
学习目标
1. 理解 JVM 内存模型,掌握 JVM 内存构成
2. 理解 Java 程序的运行过程,学会通过调
HH
变化
3. 了解 Java 内存管理,认识垃圾回收
4. 建立编程时高效利用内存、避免内存溢上
D
的理 (Java Virtual Machine, JVM )
* Java 程序运行在 JVM 上,JVM 是程序与操作系统之间的桥梁。
* JVM 实现了 Java 的平台无关性。
* JVM 是内存分配的前提。
通过全限定名装载
大网 Java 内存模型 Java 程序内存运行分 Java 内存管理建议
JVM 内存模型
动画演示 JVM Java 程序内存运行分析 Java 内存管理建议
Java 程序运行过程会涉及的内存区域
程序计数器 当前线程执行的字节码的行号指示器。
栈 保存局部变量的值,包括: 用来保存基本数据类型的值;
保存类的实例,即堆区对象的引用《〈指针),也可以用来
人 CStack )
用来 存放动态 如 new 出来提 0 码力 |
44 页 |
818.30 KB
| 2 年前 3 良好的生态,上手门槛低
✓ Wasm? Lua?
## MoE 有什么挑战
业界少见 - 重度依赖 cgo
✓ cgo 是成熟 & 稳定的
✓ 唯一的 bug: trace 工具
✓ 性能挖掘空间大
网关场景
✓ 性能敏感
✓ 延时敏感
## 第二部分
## cgo 工作机制
## Foreign Function Interface
① 函数调用
② 数据交互
✓ 对 PC 寄存器的修改 “释放” P

切栈
exitsyscall
获取 P
切栈
① “释放” P 并没有立即执行,需要等 sysmon 来 retake
✓ 属于优化;通常 C 很快返回
② 获取不到 P,也会将 G 放入全局 G 队列
## 第四部分 googlesource.com/c/go/+/495855
5 月 18 日,第四次合入
① g0 的栈空间(lo,hi)是动态指定的
② 原来是当前 C 栈顶,增长 32k
① 后续 C 栈顶变高,morestack 检查需要扩栈
② 转发信号时,通过 sp 是否在 g0 栈来判断上下文
## 第五部分
## GC 优化
## 内存交互原理
同一进程内,可以互访
① 内存布局一致 0 码力 |
45 页 |
5.74 MB
| 2 年前 3 ### 9. 创建工作空间与功能包
主讲人:古月
## • 工作空间
工作空间(workspace)是一个存放工程开发相关文件的文件夹。
src: 代码空间(Source Space)
build: 编译空间(Build Space)
• devel: 开发空间(Development Space)
• install: 安装空间(Install Space)
workspace_folder/ bash
setup.bash
setup.sh
...
catkin编译系统下的工作空间结构
## • 创建工作空间
$ mkdir -p ~/catkin_ws/src
## 创建工作空间
$ cd ~/catkin_ws/src
$ catkin_init_workspace
## 编译工作空间
$ cd ~/catkin_ws/
$ catkin_make
## 设置环境变量 roscpp
## 编译功能包
$ cd ~/catkin_ws
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
同一个工作空间下,不允许存在同名功能包
不同工作空间下,允许存在同名功能包
## • 创建功能包

## 金卫 中国大陆

扫一扫上面的二维码图案,加我为朋友。
• 支流科技-解决方案架构师
• Apache APISIX [Image](/uploads/documents/0/d/7/2/0d72e1bb91be6aec5a918a3d31a4363b/p28_2.jpg)
## APISIX 全流量代理的价值
· 节约成本
·统一技术栈
·统一管理
· 复用技术经验

## 0 码力 |
34 页 |
3.50 MB
| 1 年前 3
|