<div id="n3wdry" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/png/168324/15483351638-35ab03b8-68d2-4176-8325-abdd3c5736.png" data-width="827">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/png/168324/15483351638-35ab03b8-68d2-4176-8325-abdd3c5736.png" width="827" />
</div>
或者IBM 的 OpenJ9。</div>
<div id="k6y2au" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483408236-9d59042d-2544-4fd6-aa25-9fd52903027d.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483408236-9d59042d-2544-4fd6-aa25-9fd52903027d.jpeg" width="720" />
</div>
<div id="selsgg" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483438172-fc3af688-ebb7-4d82-a652-35809ecd111e.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483438172-fc3af688-ebb7-4d82-a652-35809ecd111e.jpeg" width="720" />
</div>
<div id="ygt6ag" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483462686-aabb0aaf-f940-4f49-9b47-8723a87d9b45.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483462686-aabb0aaf-f940-4f49-9b47-8723a87d9b45.jpeg" width="720" />
</div>
<div id="ngm3de" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483478284-1e9e1dd2-9d2a-4387-83de-71d296d59df1.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483478284-1e9e1dd2-9d2a-4387-83de-71d296d59df1.jpeg" width="720" />
</div>
flag,表明这个是一个接口文件 interface。那么从规范上来说,如果接口 flag 被设定了以后,它就要同时去设一个 abstract 的 flag,所以 HotSpot 报了一个格式问题,这个是正确的。那么 Open J9 上我们就找到一个缺陷。</div>
<div id="q6ke" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483496969-126615ab-4105-4d2f-9135-358e35667512.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483496969-126615ab-4105-4d2f-9135-358e35667512.jpeg" width="720" />
</div>
<div id="4f41fn" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483514160-a0029bb7-c338-43-83ba-110828e08b.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483514160-a0029bb7-c338-43-83ba-110828e08b.jpeg" width="720" />
</div>
<clinit> in a class file are of noconsequence, “除了类初始化这个函数以外,其他的函数加上这种标识符 of no consequence”,这到底是一个什么含义?这个里面大家就有误解了。Hotspot 认为它是一个常规的方法,但是 J9 认为这里面就是一个格式错误,这个就是大家对 of no consequence 会有认识上的不一样。</div>
<div id="t2nlan" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483534596-d1562e79-ac4f-4c0f-9243-a25a40cffd45.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483534596-d1562e79-ac4f-4c0f-9243-a25a40cffd45.jpeg" width="720" />
</div>
<div id="dqa0ul" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483552031-90a9a3f9-2540-4bf4-a25f-509157f4912e.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483552031-90a9a3f9-2540-4bf4-a25f-509157f4912e.jpeg" width="720" />
</div>
<div id="drve" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483567778-bfe91ec8-f981-49bc-ac57-e4555a540d.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483567778-bfe91ec8-f981-49bc-ac57-e4555a540d.jpeg" width="720" />
</div>
Java 虚拟机差别测试,第二个是把它作为新的种子来做变种,能够得到新的变种。</div>
<div id="uqzuql" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483598620-e6fedaf9-473d-426a-8d-0bdedfe741db.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483598620-e6fedaf9-473d-426a-8d-0bdedfe741db.jpeg" width="720" />
</div>
<div id="swikue" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483613907-4eb58227-781b-4439-bf72-596672efc7b9.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483613907-4eb58227-781b-4439-bf72-596672efc7b9.jpeg" width="720" />
</div>
<div id="n2esyo" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/154836303-554462b0-f407-441e-92d1-674f2ed27d5d.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/154836303-554462b0-f407-441e-92d1-674f2ed27d5d.jpeg" width="720" />
</div>
<li data-type="list-item" data-list-type="unordered-list">
<div data-type="p">第一个执念,有很多同学都学了编译,那么编译原理里面其实有很多程序分析和优化的算法。当时在做这件事情的时候,就很好奇,这么多经典的算法在 Java 虚拟机实现当中,都正确地实现了吗?我们能不能在实现里面,找到一个实现错了的一个算法?</div>
</li>
<li data-type="list-item" data-list-type="unordered-list">
<div data-type="p">第二个执念,是不是能够找到在两个 Java 虚拟机上运行结果不一样的程序?这个典型的就拿主流的 J9 和 Hotspot,在上面能不能用同样字节码,能够运行不一样,还有为什么?比如执行的时候是不是还会有各种各样奇怪的现象,例如 double free 等问题。 </div>
</li>
<div id="46pecg" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483672724-23157def-cbc8-4c90-b5d5-e049aadf2ec8.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483672724-23157def-cbc8-4c90-b5d5-e049aadf2ec8.jpeg" width="720" />
</div>
<div id="hyeyvx" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483694031-3e20da-374c-4024-9926-3636fbaf1b39.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483694031-3e20da-374c-4024-9926-3636fbaf1b39.jpeg" width="720" />
</div>
<div id="0gspdf" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483721959-24be042f-3f-406c-aa1a-a63df8c8fb0a.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483721959-24be042f-3f-406c-aa1a-a63df8c8fb0a.jpeg" width="720" />
</div>
满足结构锁机制,但是 J9 不要求,所以这里面会形成一个差别,这是所发现的第一个差别。</div>
<div id="zp0gns" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483741979-60b05b2f-77f3-47a2-aed1-8bf7680c5ea6.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483741979-60b05b2f-77f3-47a2-aed1-8bf7680c5ea6.jpeg" width="720" />
</div>
<div id="hefceg" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483758078-491e9e88-8826-4260-9346-d1513a7add41.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483758078-491e9e88-8826-4260-9346-d1513a7add41.jpeg" width="720" />
</div>
<div id="43ggpo" data-type="image" data-display="block" data-align="" data-src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483773231-becfbfdd-9227-43cb-a907-eea780cdfd.jpeg" data-width="720">
<img src="https://intranetproxy.alipay.com/skylark/lark/0/2019/jpeg/168324/15483773231-becfbfdd-9227-43cb-a907-eea780cdfd.jpeg" width="720" />
</div>
因篇幅问题不能全部显示,请点此查看更多更全内容