强制 JVM 为线程缓存变量
Force JVM to cache variables for threads
有没有办法告诉 JVM 尽可能长时间地为线程缓存变量并且永远不要更新它们,除非使用内存屏障或 volatile 变量? (用于测试)
导致永不终止条件循环等著名效果的并不是真正的线程局部变量缓存。
更重要的是,如果编译器可以证明变量不需要change/does不需要观察负载之间的并发变化,那么编译器可能会消除冗余负载。
许多并发失败也不一定取决于看到过时的值,它们也可能是由于看到新值的顺序不正确而导致的。我想我已经阅读了一些关于修改后的研究 VM 的内容,该 VM 积极地对生成的代码执行合法但程序员敌对的转换以引发并发失败。
您可以尝试提高所有内联限制和代码缓存大小,并希望尽可能多地编译成一个巨大的代码块,并且编译器尽可能多地消除负载。
有没有办法告诉 JVM 尽可能长时间地为线程缓存变量并且永远不要更新它们,除非使用内存屏障或 volatile 变量? (用于测试)
导致永不终止条件循环等著名效果的并不是真正的线程局部变量缓存。
更重要的是,如果编译器可以证明变量不需要change/does不需要观察负载之间的并发变化,那么编译器可能会消除冗余负载。
许多并发失败也不一定取决于看到过时的值,它们也可能是由于看到新值的顺序不正确而导致的。我想我已经阅读了一些关于修改后的研究 VM 的内容,该 VM 积极地对生成的代码执行合法但程序员敌对的转换以引发并发失败。
您可以尝试提高所有内联限制和代码缓存大小,并希望尽可能多地编译成一个巨大的代码块,并且编译器尽可能多地消除负载。