diff --git a/.gitignore b/.gitignore index f68d109..9211a32 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,5 @@ bin/ .vscode/ ### Mac OS ### -.DS_Store \ No newline at end of file +.DS_Store +/.idea/ diff --git a/src/main/java/jvm/debugtool/DeadLockDemo.java b/src/main/java/jvm/debugtool/DeadLockDemo.java new file mode 100644 index 0000000..25e7171 --- /dev/null +++ b/src/main/java/jvm/debugtool/DeadLockDemo.java @@ -0,0 +1,36 @@ +package jvm.debugtool; + +/** + * debug tool: Jconsole + */ +public class DeadLockDemo{ + static class SyncAddRunnable implements Runnable { + int a, b; + + public SyncAddRunnable(int a, int b) { + this.a = a; + this.b = b; + } + + @Override + public void run() { + synchronized (Integer.valueOf(a)) { + try { + Thread.sleep(100); + } catch ( InterruptedException e) { + e.printStackTrace(); + } + synchronized (Integer.valueOf(b)) { + System.out.println(a + b); + } + } + } + } + + public static void main(String[] args) { + for(int i = 0;i < 100;i++){ + new Thread(new SyncAddRunnable(1,2)).start(); + new Thread(new SyncAddRunnable(2,1)).start(); + } + } +} diff --git a/src/main/java/jvm/debugtool/JHSDBTestCase.java b/src/main/java/jvm/debugtool/JHSDBTestCase.java new file mode 100644 index 0000000..d5cd831 --- /dev/null +++ b/src/main/java/jvm/debugtool/JHSDBTestCase.java @@ -0,0 +1,26 @@ +package jvm.debugtool; + +/** + * vm args: -Xmx10m -XX:+UseSerialGC -XX:-UseCompressedOops + */ +public class JHSDBTestCase { + + static class Test { + static ObjectHolder staticObj = new ObjectHolder(); + + ObjectHolder instanceObj = new ObjectHolder(); + + void foo() { + ObjectHolder localObj = new ObjectHolder(); + //set break point here + System.out.println("done"); + } + } + + private static class ObjectHolder {} + + public static void main(String[] args) { + Test test = new JHSDBTestCase.Test(); + test.foo(); + } +}