2020.11.21更新:你能想象吗 很长时间写了一堆东西,从其他页面回来这个编辑页,结果空白了。我当场去世。csdn为什么那么多bug。
问题:
Java内存区域和内存模型的区别
答案:
内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。
Java内存模型是共享内存的并发模型,线程之间主要通过读-写共享变量(堆内存中的实例域,静态域和数组元素)来完成隐式通信。
Java 内存模型(JMM)控制 Java 线程之间的通信,决定一个线程对共享变量的写入何时对另一个线程可见。
参考:https://www.cnblogs.com/czwbig/p/11127124.html
问题 jvm运行时数据区域
答案 https://blog.csdn.net/weixin_42970433/article/details/109273325
问题 新生代和老年代的默认比例
答案(JDK1.8 默认1:2)
问题 哪些会造成OOM 为什么会造成OOM
答案
参考:https://blog.csdn.net/weixin_42970433/article/details/109273325
问题:触发FULL GC的场景
答案
1.直接调用System.gc()
2.老年代空间不足
3.永久代空间不足
4.gc担保失败。空间担保失败。
5.Concurrent mode failure
发生在cms的并行清理阶段,发现有新的垃圾产生,而且老年代没有足够空间导致的.
问题 jvm怎么发现死锁
答案
进入jdk安装目录的bin下面,输入jps,先查看我们要检测死锁的进程:
然后可以看到进程的进程号:8384,然后执行:Jstack -l 8384
参考:https://blog.csdn.net/wei009965/article/details/89367095
问题 Java垃圾回收的目的
答案:识别并且丢弃不再使用的对象来释放和重用资源。回收内存。
问题 如果对象的引用被置为null,垃圾回收器是否会立即释放对象占用的内存?
答案
不会,在下一个垃圾回调周期中,这个对象将是被可回收的。
也就是说并不会立即被垃圾收集器立刻回收,而是在下一次垃圾回收时才会释放其占用的内存。
问题 System.gc()会立刻进行垃圾回收吗
答案
执行System.gc()函数的作用只是提醒或告诉虚拟机,希望进行一次垃圾回收。
参考:https://blog.csdn.net/huangdeijia/article/details/89403936
问题 jvm一个对象从创建到回收的整个过程
答案
https://zhuanlan.zhihu.com/p/267223891