https://www.zhihu.com/people/rednaxelafx/answers
http://hllvm.group.iteye.com/group/topic/44381#post-272188
eden区没有发生minor gc,对象直接分配在了old gen
答复: HotSpot VM 内存堆的两个Survivor区
[资料合集] RednaxelaFX写的文章/回答的导航帖(work in progress)
——终极meta大坑?
——嗯,对我来说可能是吧。
我以前在ItEye写的博客,Script Ahead, Code Behind,已经长草好长时间了。但我其实并没有停止写作,只是更倾向于以跟人讨论的方式来写作。知乎这种问答形式的网站就很吸引我,所以我后来逐渐转向主要在知乎以写回答的形式来写作了——也被一些朋友吐槽“你又拿回答当博客写啦”orz
但在知乎写的回答毕竟不像自己的博客那样有更规整的主干、更有相关性的时间线。我常常发现自己要多次回答以前已经回答过的、基本上一模一样的问题。有时候一偷懒,就直接放个以前的回答的传送门过去当答案。想来,如果能有更方便的入口找到我以前发过的东西的话,或许能减少一些重复提问,然后在遇到重复提问的时候也更方便我自己找到自己的传送门 >_<
(所以我现在是如何找到自己的传送门的?有些是我记得自己写的东西的关键字然后放狗去搜一把;有些是我知道我大概什么时候写的,然后直接在“我的回答”里慢慢找出来…)
接下来我会把我的一些文章和回答的传送门按照一定知识脉络整合到这帖来。请静候更新~ 下面的链接组织方式在施工完成前会随时改变,还请见谅。
关于我的各种链接大入口:
- 旧博客ITeye:Script Ahead, Code Behind
- ITeye HLLVM群组:高级语言虚拟机 - ITeye技术社区
- 豆瓣:RednaxelaFX
- SlideShare:http://www.slideshare.net/RednaxelaFX
我以前发的跟高级语言虚拟机相关的文章/回答有过一个老的合集帖:自己关于VM的帖的目录 - Script Ahead, Code Behind
============================================
书单推荐
书籍评论
- 推荐度★★★★★:《The Garbage Collection Handbook》
- 推荐度★★★★★:『ガベージコレクションのアルゴリズムと実装』 / 《垃圾回收的算法与实现》
- 推荐度★★★★☆:『プログラミング言語を作る』 / 《自制编程语言》
- 推荐度★★★☆☆:《编译系统透视:图解编译原理》
- 建议抵制:[请勿购]清华大学出版社的抄袭书
学习经历
编译器,编译原理
- 什么语言最适合写编译器/解释器? - RednaxelaFX 的回答 - 知乎
- 如何在C++中抛出一个编译错误? - RednaxelaFX 的回答 - 知乎
- 应该怎样把值传给一段被编译后的机器码? - RednaxelaFX 的回答 - 知乎
- 语法制导翻译(Syntax-Directed Translation,SDT)
- 语法制导翻译是干什么的? - RednaxelaFX 的回答 - 知乎
- 有哪些关于c4 - C in four function 编译器的文章? - RednaxelaFX 的回答 - 知乎
- 如何对C语言的FOR语句给出一个生成中间代码的语法制导定义? - RednaxelaFX 的回答 - 知乎
- 中间表示(Intermediate Representation)
- IR综合问题
- 如何设计三地址中间代码的数据结构,以便于基本块分析和代码优化? - RednaxelaFX 的回答 - 知乎
- IR和ByteCode有什么区别? - RednaxelaFX 的回答 - 知乎
- [OMR/TR] Testarossa的IL设计 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- SSA形式(Static Single Assignment Form)
- Phi node 是如何实现它的功能的? - RednaxelaFX 的回答 - 知乎
- 问:SSA静态单赋值。如果没有分支,顺序执行的代码上,例如int a;........; a = 3;.......;a = 4; 最终可能会变成a_1,a_2.但是如果直接使用变量a会怎样呢?ssa有什么优势(顺序执行代码) - RednaxelaFX 的回答 - 知乎
- 有没有可能直接遍历AST生成SSA形式的中间代码,而不是先生成quad四元式,再转换为SSA形式? - RednaxelaFX 的回答 - 知乎
- 对于LLVM之类的编译器是如何实现在构造SSA形式的IR的时候,计算出def-use链? - RednaxelaFX 的回答 - 知乎
- 过程间和过程内的数据流分析算法在类似LLVM的IR或HotSpot C1的HIR中,是如何实现的? - RednaxelaFX 的回答 - 知乎
- 编译优化综合问题
- [科普] 一个演示简单编译器循环优化的例子 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- 编译器生成的汇编语句执行顺序为什么与C代码顺序不同? - RednaxelaFX 的回答 - 知乎
- 对于一个很复杂的常量表达式,编译器会算出结果再编译吗? - RednaxelaFX的回答 - 知乎
- 寄存器分配(register allocation)
- 逆向工程(reverse engineering)
- GCC
- Clang / LLVM
- 对于LLVM之类的编译器是如何实现在构造SSA形式的IR的时候,计算出def-use链? - RednaxelaFX 的回答 - 知乎
- [链接] Dart-on-LLVM - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- Microsoft C/C++ Optimizing Compiler (MSVC / CL)
- C4(C in four functions)
- TCC(Tiny C Compiler)
JIT编译器(Just-in-Time Compiler),动态编译器(Dynamic Compiler)
- JIT编译,动态编译与自适应动态编译 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- 有哪些常用 JIT 算法? - RednaxelaFX 的回答 - 知乎
- 为什么 JVM 不用 JIT 全程编译? - RednaxelaFX 的回答 - 知乎
- HotSpot VM JIT的编译产出,理论上能否被复用? - RednaxelaFX 的回答 - 知乎
- JIT编译器杂谈#1:JIT编译器的血缘(一) - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- On-Stack Replacement(OSR),Deoptimization
解释器
- 什么语言最适合写编译器/解释器? - RednaxelaFX 的回答 - 知乎
- 解释器里出错打印调用堆栈是怎么实现的? - RednaxelaFX 的回答 - 知乎
- 关于虚拟机里的stack caching(栈顶缓存)的随笔 - 高级语言虚拟机 - ITeye群组
自动内存管理,垃圾回收(GC,garbage collection),引用计数(reference counting)
- 基础概念讨论
- G1 GC的讨论 - 高级语言虚拟机 - ITeye群组
- 这段 Java 代码中的局部变量能够被提前回收吗?编译器或 VM 能够实现如下的人工优化吗? - RednaxelaFX 的回答 - 知乎
- Java 中, 为什么一个对象的实例方法在执行完成之前其对象可以被 GC 回收? - RednaxelaFX 的回答 - 知乎
- Go1.6中的gc pause已经完全超越JVM了吗? - RednaxelaFX的回答 - 知乎
- [新闻] WebKit的新并发GC:Riptide - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
元循环求值器(metacircular evaluator),元循环VM,元循环解释器
- 用 JavaScript 写成的 JavaScript 解释器,意义是什么? - RednaxelaFX 的回答 - 知乎
- JavaScript的功能是不是都是靠C或者C++这种编译语言提供的? - RednaxelaFX 的回答 - 知乎
C++
Java,JVM,Dalvik,Android Runtime(ART)
- Java语言与Java源码层编译器
- 怎样算是学好了 Java? - RednaxelaFX 的回答 - 知乎
- java编译器对编译后class以及其内部变量的命名规则是什么? - RednaxelaFX 的回答 - 知乎
- Activity 源码中的「private static final boolean DEBUG_LIFECYCLE = false;」有什么作用? - RednaxelaFX 的回答 - 知乎
- Java 中 for 和 while 的区别是什么? - RednaxelaFX 的回答 - 知乎
- Java中两个new的对象对==做比较可以返回true吗? - RednaxelaFX 的回答 - 知乎
- JVM对于声明为final的局部变量(local var)做了哪些性能优化? - RednaxelaFX 的回答 - 知乎
- 为什么 Eclipse 要使用自己开发的编译器(ECJ) 而不用 Javac? - RednaxelaFX 的回答 - 知乎
- [HotSpot VM] 关于包可访问的虚方法被覆写的一个例子 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- java为什么不支持泛型数组? - RednaxelaFX 的回答 - 知乎
- Java不能实现真正泛型的原因? - RednaxelaFX 的回答 - 知乎
- Reifiable generics与Type erasure generics各有怎样的优点与缺点? - RednaxelaFX 的回答 - 知乎
- Java 类名.class与类名.this 的区别? - RednaxelaFX 的回答 - 知乎
- 谁来解释下基本类型变量的class,如int.class.什么时候会使用它们? - RednaxelaFX 的回答 - 知乎
- 为什么Android的Void实现和JDK有区别? - RednaxelaFX的回答 - 知乎
- 如何理解ByteCode、IL、汇编等底层语言与上层语言的对应关系? - RednaxelaFX 的回答 - 知乎
- Java可以像C++内嵌汇编语言一样,内嵌Java字节码吗? - RednaxelaFX 的回答 - 知乎
- JVM综合问题
- Java JVM怎么学习啊?从哪方面入手?- RednaxelaFX 的回答 - 知乎
- Java 平台中的 JVM 和 .Net 平台下的 CLR 分别是用什么语言写的? - RednaxelaFX 的回答 - 知乎
- 各个操作系统下的 JVM 是谁开发出来的? - RednaxelaFX 的回答 - 知乎
- Twitter 使用的是什么 JVM? - RednaxelaFX 的回答 - 知乎
- JVM 和 LLVM 为什么没有硬件实现? - RednaxelaFX 的回答 - 知乎
- 写个编译器,把C++代码编译到JVM的字节码可不可行? - RednaxelaFX 的回答 - 知乎
- [链接] 把C编译到JVM上运行的编译器 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- IR和ByteCode有什么区别? - RednaxelaFX 的回答 - 知乎
- JVM规范与HotSpot VM实现里final static常量的初始化时机 - 高级语言虚拟机 - ITeye群组
- 类加载(class loading)与链接(linking)
- 对象系统,对象布局
- JVM里的符号引用如何存储? - RednaxelaFX 的回答 - 知乎
- JVM符号引用转换直接引用的过程? - RednaxelaFX 的回答 - 知乎
- Java instanceof 关键字是如何实现的? - RednaxelaFX 的回答 - 知乎
- [HotSpot VM] 关于包可访问的虚方法被覆写的一个例子 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- HotSpot VM对象布局里继承边界上的对齐的例子 - 高级语言虚拟机 - ITeye群组
- 为什么bs虚函数表的地址(int*)(&bs)与虚函数地址(int*)*(int*)(&bs) 不是同一个? - RednaxelaFX 的回答 - 知乎
- 反射(reflection)
- 关于反射调用方法的一个log - Script Ahead, Code Behind
- java中,当父类属于抽象类的时候利用反射技术是自动调用子类的方法吗? - RednaxelaFX 的回答 - 知乎
- GC
- java System.gc() 与 Runtime.getRuntime().gc() 有什么区别? - RednaxelaFX 的回答 - 知乎
- Java 等语言的 GC 为什么不实时释放内存? - RednaxelaFX 的回答 - 知乎
- JVM GC遍历一次新生代所有对象是否可达需要多久? - RednaxelaFX 的回答 - 知乎
- G1 GC的讨论 - 高级语言虚拟机 - ITeye群组
- 这段 Java 代码中的局部变量能够被提前回收吗?编译器或 VM 能够实现如下的人工优化吗? - RednaxelaFX 的回答 - 知乎
- Java 中, 为什么一个对象的实例方法在执行完成之前其对象可以被 GC 回收? - RednaxelaFX 的回答 - 知乎
- 在TLAB中创建的对象,如何被其他线程共享? - RednaxelaFX 的回答 - 知乎
- Java在创建对象时,如果恰巧碰到GC导致的STW时,会出现什么情况,对象能正确分配成功吗? - RednaxelaFX 的回答 - 知乎
- Go1.6中的gc pause已经完全超越JVM了吗? - RednaxelaFX的回答 - 知乎
- JIT编译器(Just-in-Time Compiler),AOT编译器(Ahead-of-Time Compiler)
- [新闻] Oracle开源了其Java AOT编译器 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- 为什么 JVM 不用 JIT 全程编译? - RednaxelaFX 的回答 - 知乎
- HotSpot VM JIT的编译产出,理论上能否被复用? - RednaxelaFX 的回答 - 知乎
- 线程模型(threading model)
- Java Native Interface(JNI)
- 多租户(multitenancy)与资源管理
- Java与JVM的配套工具
- HotSpot VM
- Java Program in Action—Java程序的编译、加载与执行
- OpenJDK代码的“阅读线索”简介,外加HotSpot VM类加载子系统的超简单介绍 - 高级语言虚拟机 - ITeye群组
- 在TLAB中创建的对象,如何被其他线程共享? - RednaxelaFX 的回答 - 知乎
- Java在创建对象时,如果恰巧碰到GC导致的STW时,会出现什么情况,对象能正确分配成功吗? - RednaxelaFX 的回答 - 知乎
- HotSpot VM JIT的编译产出,理论上能否被复用? - RednaxelaFX 的回答 - 知乎
- [HotSpot VM] 关于包可访问的虚方法被覆写的一个例子 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- Java是否可以做到修改类而不用重启JVM? - RednaxelaFX 的回答 - 知乎
- 这段 Java 代码中的局部变量能够被提前回收吗?编译器或 VM 能够实现如下的人工优化吗? - RednaxelaFX 的回答 - 知乎
- 如何理解《深入理解java虚拟机》第二版中对String.intern()方法的讲解中所举的例子? - RednaxelaFX 的回答 - 知乎
- Java 中, 为什么一个对象的实例方法在执行完成之前其对象可以被 GC 回收? - RednaxelaFX 的回答 - 知乎
- 用Java获取full GC的次数?(2) - Script Ahead, Code Behind
- 通过jstat工具来查看jvmstat monitor的值 - Script Ahead, Code Behind
- [Java][HotSpot VM] jstat -compiler的输出的含义 - 首发于 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- HotSpot Mostly-Concurrent Mark-Sweep GC(CMS GC)
- CMS与mark-sweep/mark-compact/copying GC的关系 - 高级语言虚拟机 - ITeye群组
- Go1.6中的gc pause已经完全超越JVM了吗? - RednaxelaFX的回答 - 知乎
- jstat显示的full GC次数与CMS周期的关系 - Script Ahead, Code Behind
- HotSpot Garbage-First GC(G1 GC)
- HotSpot Client Compiler(HotSpot C1)
- HotSpot Server Compiler(HotSpot C2)
- 回复:想研究HotSpot C2编译器编译过程,请教如何入手? - 高级语言虚拟机 - ITeye群组
- 使用IdealGraphVisualizer观察HotSpot Server Compiler编译过程的一个例子 - 高级语言虚拟机 - ITeye群组
- 如何评价《王垠:C 编译器优化过程中的 Bug》? - RednaxelaFX 的回答 - 知乎
- HotSpot C2寄存器分配中OptoReg的意义 - 高级语言虚拟机 - ITeye群组
- JIT编译找不到类? - Script Ahead, Code Behind
- JDK6u25跑Eclipse变快了?——多层编译模式 - Script Ahead, Code Behind
- HotSpot VM解释器
- 关于虚拟机里的stack caching(栈顶缓存)的随笔 - 高级语言虚拟机 - ITeye群组
- HotSpot VM里的解释器在client与server模式上的一点区别 - 高级语言虚拟机 - ITeye群组
- 对象模型(Object Model) / 对象布局(Object Layout)
- HotSpot VM对象布局里继承边界上的对齐的例子 - 高级语言虚拟机 - ITeye群组
- 为什么bs虚函数表的地址(int*)(&bs)与虚函数地址(int*)*(int*)(&bs) 不是同一个? - RednaxelaFX 的回答 - 知乎
- Java Native Interface(JNI)
- J9 VM,Eclipse OMR(IBM OMR)
- [新闻] IBM OMR项目正式开源 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- [新闻] IBM/Eclipse OMR的编译器部分也已开源,以及IBM即将开源J9 VM - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- [新闻] IBM J9 JVM开源的消息正式宣布了——OpenJ9 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- [OMR/TR] Testarossa的IL设计 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- 如何评价 IBM 的 Ruby + OMR? - RednaxelaFX 的回答 - 知乎
- [新闻] CPython / 微软 Pyjion / IBM Python+OMR - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- JRockit
- Dalvik VM
- Android Runtime(ART)
- ART没有了Java虚拟机,能支持的了JNI吗?比如Java和C++互调用,还有ART不用解释器了那有没有可能放弃Java呢? - RednaxelaFX 的回答 - 知乎
- Android ART虚拟机中 boot.art 和 boot.oat 之间什么关系? - RednaxelaFX 的回答 - 知乎
- ART是如何保证checkpoint 点一定会被跑到的? - RednaxelaFX 的回答 - 知乎
- ART和JIT的除了编译的时机区别以外,对于编译的方式有什么区别吗? - RednaxelaFX 的回答 - 知乎
- Android 5.0的ART是如何为方法调用开辟栈空间的? - RednaxelaFX 的回答 - 知乎
- Android5.0中ARM指令中对于类方法的调用的实际跳转地址的计算方法? - RednaxelaFX 的回答 - 知乎
- ART虚拟机中跳转函数为什么要用汇编做一次中转?为什么不直接跳转到C/C++函数呢? - RednaxelaFX 的回答 - 知乎
- Android 中的 LLVM 主要做什么? - RednaxelaFX 的回答 - 知乎
- 为啥ART会删除了所有基于LLVM的后端? - RednaxelaFX 的回答 - 知乎
- [新闻] ART有了新的汇编写的解释器 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- [新闻] Android Runtime(ART)的一些新动态,2016-08 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
.NET,C#,CLR(Common Language Runtime),CoreCLR,MSIL / CIL,.NET Native,CoreRT,RyuJIT,LLILC
- C#语言综合问题
- 如果 C#/.NET 是 MSR 那群搞 PLT 的人(比如 SPJ)设计的,那么会变成怎样? - RednaxelaFX 的回答 - 知乎
- Reifiable generics与Type erasure generics各有怎样的优点与缺点? - RednaxelaFX 的回答 - 知乎
- 如果C#开放了值类型的继承,会有什么问题发生? - RednaxelaFX 的回答 - 知乎
- MSIL(Microsoft Intermediate Language) / CIL(Common Intermediate Language)
- CLR / CoreCLR
- LLILC
- .NET Native / CoreRT
JavaScript与JavaScript引擎
- JavaScript语言综合问题
- JavaScript引擎综合问题
- 新手上路学习JavaScript引擎实现——路线图 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- [链接帖] 各JavaScript引擎的简介,及相关资料/博客收集帖 - 资料 - 高级语言虚拟机 - ITeye群组
- JavaScript 里 new 出来的对象 怎么销毁它? - RednaxelaFX 的回答 - 知乎
- 为什么至今没有一本JavaScript引擎作者写的书? - RednaxelaFX 的回答 - 知乎
- Google V8
- 新手应该如何读Google V8引擎源代码? - RednaxelaFX 的回答 - 知乎
- HSimulate这条Hydrogen里的instruction到底是什么意思? - RednaxelaFX 的回答 - 知乎
- Chakra / ChakraCore
- JavaScript 可以开发 Windows 8 应用,但为什么它不是直接运行在 CLR 上,而又重新弄了一个虚拟机 Chakra? - RednaxelaFX 的回答 - 知乎
- [新闻] 微软如期开源ChakraCore JavaScript引擎 - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- WebKit JavaScriptCore (又名Nitro)
Ruby
- Ruby VM综合问题
- CRuby(Ruby MRI)
- JRuby
- YARV和JIT,还有JRuby…… - Script Ahead, Code Behind
- 造成Ruby和JRuby执行性能上存在差异的原因是什么? - RednaxelaFX 的回答 - 知乎
- Ruby多重赋值的底层原理是什么? - RednaxelaFX 的回答 - 知乎
- mruby
Python
- CPython
- python idle 解释和直接 python script.py 解释有什么差别? - RednaxelaFX 的回答 - 知乎
- 为什么 Python 工程师很少像 Java 工程师那样讨论垃圾回收? - RednaxelaFX 的回答 - 知乎
- Pyjion
- [新闻] CPython / 微软 Pyjion / IBM Python+OMR - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- Pyjion的代码质量一例 [20160221] - 编程语言与高级语言虚拟机杂谈(仮) - 知乎专栏
- PyPy
- Pyston
Dart
Hack
Go(Golang)
PHP