- 博客(8)
- 收藏
- 关注
原创 JVM 中的内存溢出
内存溢出,通俗一点,就是 JVM 内存不足了,没有空闲内存,并且垃圾收集器也无法提供更多内存。这里的意思是说,通常在抛出 OutOfMemoryError 之前,垃圾收集器会被触发,尽其所能去清理空间。但也不是在所有情况下垃圾回收器都会被触发,比如分配了一个大对象,超过了堆的最大值,JVM 可能判断出垃圾收集并不能解决这个问题,直接抛出 OutOfMemoryError 。在 JVM 内存结...
2019-01-13 18:19:26 385
原创 JVM 内存结构
1、程序计数器Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现,所以确定的时刻一个处理器只会执行一个线程中的指令。为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器,用于记录线程所执行字节码指令的地址。2、虚拟机栈虚拟机栈是线程私有的。每个方法执行时会创建一个帧栈,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。当方法调用时,栈帧入栈...
2019-01-13 18:17:58 199
原创 JVM 中如何判断对象可以被回收
JVM 的垃圾回收器主要关注的是堆上创建的实例对象,在每次对这些对象进行回收前,需要确定哪些对象是可以去进行回收的。主要有下面两种方法。引用计数算法给对象添加一个引用计数器,当有一个地方引用它,计数器值加 1;当引用失效时,计数器值减 1。任何时刻计数器值为 0 表示这个对象可以被回收了。优点:判断效率高,实现简单。不足之处:难以解决对象之间相互循环引用的问题。比如:public...
2019-01-13 18:16:15 641
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人