3. JVM Sustaining Engineer
OpenJDK 8 Update Project
Maintainer
JavaOne Rock Star
Co-author of Oracle WebLogic
Server 11g 構築・運用ガイド
@DavidBuckJP
https://blogs.oracle.com/buck/
Hello! David Buck (左)
39. Oracle Contributor Agreement
• Mission Control プロジェクトに貢献する前に OCA を署名し、
オラクルに送ることが必要
• 他の OpenJDK プロジェクトの同様
• 一回だけですべての OpenJDK のプロジェクトへ貢献できる
40. “...you're doing an awesome job in building a real community and a
*very* open source project.“
- Red Hat の貢献者より Marcus Hirt へ
jmc-dev alias, November 8, 2018
53. Safepoints
• Stop-the-World の実装
• 実行スレッドを既知状態で停止する
• Java コードを実行するすべてのスレッドを停止する
JNI コードを停止する必要はない
• プリエンプションが利用されない
• ポーリングが利用される
By YPLeroux at English Wikipedia, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=17734859
54. Safepoints
• Stop-the-World の実装
• 実行スレッドを既知状態で停止する
• Java コードを実行するすべてのスレッドを停止する
JNI コードを停止する必要はない
• プリエンプションが利用されない
• ポーリングが利用される
By YPLeroux at English Wikipedia, CC BY 3.0, https://commons.wikimedia.org/w/index.php?curid=17734859
70. コラッツ問題の検証
public static void main(String[] args) {
long num;
for (int i=2; i < Integer.MAX_VALUE; i++) {
num = i;
for (int j=0; j < Integer.MAX_VALUE; j++) {
num = next(num);
if (num == 1) break;
}
if (num != 1) {
System.out.println(i + " did not end at 1.");
System.exit(-1);
} else if (i % 1000000 == 0) {
System.out.println("done with " + i);
}
}
}
72. コラッツ問題の検証
public static void main(String[] args) {
long num;
for (int i=2; i < Integer.MAX_VALUE; i++) {
num = i;
for (int j=0; j < Integer.MAX_VALUE; j++) {
num = next(num);
if (num == 1) break;
}
if (num != 1) {
System.out.println(i + " did not end at 1.");
System.exit(-1);
} else if (i % 1000000 == 0) {
System.out.println("done with " + i);
}
}
}
73. コラッツ問題の検証
public static void main(String[] args) {
long num;
for (int i=2; i < Integer.MAX_VALUE; i++) {
num = i;
for (int j=0; j < Integer.MAX_VALUE; j++) {
num = next(num);
if (num == 1) break;
}
if (num != 1) {
System.out.println(i + " did not end at 1.");
System.exit(-1);
} else if (i % 1000000 == 0) {
System.out.println("done with " + i);
}
}
}