0
点赞
收藏
分享

微信扫一扫

【设计模式】命令模式

言午栩 2024-01-07 阅读 16
jvmjava

1. JVM内存与本地内存

2. JVM内存结构

3. 线程独占与共享区域

4. 栈与堆的区别

5. 方法区、永久代、元空间

6. 元空间为什么替代了永久代

7. JVM内存可见性

8. 类的生命周期

9. 符号引用和直接引用

10. 类的初始化

11. 双亲委派加载机制

12. 双亲委派机制的优点

13. GC如何判断对象可以被回收

14. 可达性分析算法

15. 四种JVM的垃圾回收算法

16. 分代算法

17. 为什么会出现OOM

18. 常见的OOM报错

19. OOM如何解决

20. JVM的元空间中会发生垃圾回收吗

21. 查看相关线程命令

22. Minor GC与Full GC分别在什么时候发生?

23. 对象一定分配在堆中吗?有没有了解逃逸分析技术?

24. 什么是逃逸分析

// sb就逃逸了
public static StringBuffer craeteStringBuffer(String s1, String s2) {
    StringBuffer sb = new StringBuffer();
    sb.append(s1);
    sb.append(s2);
    return sb;
}

// sb没有逃逸了
public static String createStringBuffer(String s1, String s2) {
    StringBuffer sb = new StringBuffer();
    sb.append(s1);
    sb.append(s2);
    return sb.toString();
}

25. 逃逸分析带来的好处

26. 逃逸分析的开启关闭

27. 同步省略
动态编译同步块的时候,JIT编译器可以借助逃逸分析来证实同步块的对象只能够被一个线程访问,就会取消对这部分代码的同步,这个过程也叫锁消除

如以下代码:

public void f() {
    Object hollis = new Object();
    synchronized(hollis) {
        System.out.println(hollis);
    }
}

hollis对象的生命周期只在f()方法中,并不会被其他线程所访问到,所以在JIT编译阶段优化成:

public void f() {
    Object hollis = new Object();
    System.out.println(hollis);
}

28. 元空间为什么能替代永久代

29. Stop The World

30. 指针碰撞

31. 空闲列表

32. 什么是TLAB

33. JVM有哪些垃圾回收器

附录

「堆栈内存相关」

「垃圾收集器相关」

「辅助信息相关」

举报

相关推荐

0 条评论