JVM发生OOM的 8 种原因、及解决办法

1. Java 堆空间 发生频率: 5 颗星 造成原因: 无法在 Java 堆中分配对象 吞吐量增加 应用程序无意中保存了对象引用,对象无法被 GC 回收 应用程序过度使用 finalizer。finalizer 对象不能被 GC 立刻回收。finalizer 由结束队列服务的守 »

JVM与Linux内存关系

转自:JVM与Linux内存关系分析,本文重新做了编排。 JVM启动参数-XX:+DisableExplicitGC的作用是禁止代码中显式调用GC。代码如何显式调用GC呢,通过System.gc()函数调用。如果加上了这个JVM启动参数,那么代码中调用System.gc()没 »

Java并发编程1——volatile关键字解析

阅读Java并发编程:volatile关键字解析一文后有感。 并发编程中的三个概念 原子性 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 可见性 可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到 »

Java 新生代、老年代、持久代、元空间

Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:年轻代 ( Young )、老年代 ( Tenured)。年轻代 ( Young ) 又被划分为三个区域:Eden、From Survivor、T »

JVM垃圾收集器与内存分配策略

一、如何判断对象是否还在存活 引用计数法: 主流的Java虚拟机没有使用这种方法管理内存, 因为它很难解决循环依赖 可达性分析: 通过一系列的称为”GC Roots“的对象作为起始点, 从这些节点开始向下搜索, 搜索所走过的路径称为引用链, 当一个对象到GC Ro »