知识卡片

用受控的"直接内存访问"后门支撑必须绕开类型安全的底层功能

普通读书笔记卡 · 1812.g

内容

以内存安全著称的Java要实现垃圾回收器、对象头锁定这类得直接摆弄裸内存地址的底层功能时,会遇到语言不允许直接访问内存的天然障碍。Jikes RVM的解法不是放弃类型安全,而是开一道受控窄门:定义一小撮未封装类型,只有它们的方法调用被编译器特殊处理成直接内存操作,其余代码依然享受完整强类型检查,把能绕开类型安全的范围严格限制在很小、很显眼的边界内。

参考来源

- 位置:《架构之美》第10章《元循环虚拟机的力量:Jikes RVM》10.5.5节《Magic、annotation,使事情流畅地进行》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0227.xhtml) - 结论依据:原文明确"为了容许强类型地内存存取,Jikes RVM利用一个名为VM Magic的库……未封装类型的地址用于直接存取内存……指针是强类型,不能用来代替引用"。 - 原始内容:为了容许强类型地内存存取,Jikes RVM利用一个名为VM Magic的库……未封装类型的地址用于直接存取内存……虽然神奇运算和未封装类型允许Jikes RVM中的Java代码像C或C++中的指针一样有权访问内存,但是,指针是强类型,不能用来代替引用。