摘要: 在Java8和更早版本中,如果C1编译器生成的很多中间编译结果在被C2编译的结果取代后被移除。那么在代码缓存中就会产生很多碎片。这可能会导致未分配的区域被耗尽,并且使得所有空闲空间都在空闲链表中。 阅读全文
posted @ 2022-07-30 19:17 DATA_MONK 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 一个所有性能工程师都应该知道的重要JVM开关是: -XX:+PrintCompliation 这将导致在STDOUT(标准输出)上生成一个编译事件的日志,从而使得工程师可以基本了解正在编译的内容。 PrintCompliation提供的细节有限,要访问更多关于HotSpot JIT编译器所做决策的编 阅读全文
posted @ 2022-07-30 13:19 DATA_MONK 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 因为HotSpot中的基本编译单元是一个完整方法,所以一个方法所对应的所有字节码都会被一次性地编译为原生代码。 HotSpot还支持使用一种叫做栈上交换(on-stack- replacement)OSR的技术来支持热循环的编译。 OSR用来帮助处理这样的情况:一个方法的调用频率还没有多到可以触发编 阅读全文
posted @ 2022-07-30 13:02 DATA_MONK 阅读(7) 评论(0) 推荐(0) 编辑