1.如何判定对象为垃圾对象 1.1引用计数法 1.2可达性分析 作为GCROOT的对象 虚拟机栈 本地方法区的类属性所引用的对象 方法区中常量所引用的对象 本地方法栈中引用的对象 2.如何回收 2.1回收策略 1.标记-清除算法 通过可达性分析法标记-->清除 缺点:效率较低、空间问题(出现很多不连 ...
分类:
编程语言 时间:
2020-02-14 22:59:48
阅读次数:
135
参考1 参考2 1.线程独占区 1.1程序计数器 1.2Java虚拟机栈 递归调用方法本身的时候,没用递归出口,就会出现stackOverFlow。 1.3本地方法栈 2.线程共享区 2.1Java堆 2.2方法区 运行时常量 ...
分类:
编程语言 时间:
2020-02-13 13:23:35
阅读次数:
63
VM 中文名java虚拟机,是用来运行java程序的一个平台,这篇文章 主要讲述 JVM的内存模型。 首先JVM将内存划分为了5大块,如下图所示: JVM内存模型 这5大块可以分为 两大类,分别是 线程私有的,和 线程共享的 线程私有的 虚拟机栈,本地方法栈,程序计数器 这块区域的数据是每个线程私有 ...
分类:
其他好文 时间:
2020-02-12 18:04:33
阅读次数:
52
1、程序计数器为什么是私有的 ? 作用:在多线程环境的情况下,程序计数器用于记录当前线程执行的位置,从而当线程切换回来的时候能够知道该线程上次运行到哪儿了。 所以,程序计数器私有主要是为了 线程切换后能恢复到正确的执行位置。 2、虚拟机栈和本地方法栈为什么是私有的? 每个java方法执行的同时会创建 ...
分类:
其他好文 时间:
2020-02-11 09:37:50
阅读次数:
62
内存模型以及分区,需要详细到每个区放什么 整个计算机的内存中的一部分划给了Java程序管理,在执行Java程序的时候,虚拟机会将这部分内存划分为不同区域,都有各自的用途以及生命周期。 分区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(包含运行时常量池) 程序计数器(PCR)它可以看作是当前线程所执 ...
分类:
其他好文 时间:
2020-02-07 19:08:29
阅读次数:
107
Java 虚拟机在执行 Java 程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java 虚拟机规范将 JVM 所管理的内存分为以下几个运行时数据区:程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区。 一,内存区域划分 1.线程共享区域: (1)Java堆(对象实例),G ...
分类:
编程语言 时间:
2020-02-06 16:23:32
阅读次数:
73
JVM运行时的数据区域划分图如下,该图是JVM内存模型最主要的内容。 从图中可以看出来,JVM将内存主要划分为五个部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆和方法区。这些被划分为用途不一的数据区域有着各自的特点,它们都有自己创建和销毁的时间,有的区域随着进程的启动而存在,有的是伴随着 ...
分类:
其他好文 时间:
2020-02-06 10:36:11
阅读次数:
48
OOM 异常 (OutOfMemoryError) OOM 异常 (OutOfMemoryError) Java 堆溢出 Java 虚拟机栈和本地方法栈溢出 方法区和运行时常量池溢出 直接内存溢出 Java 堆溢出 出现标志:java.lang.OutOfMemoryError: Java heap ...
分类:
编程语言 时间:
2020-02-01 19:47:03
阅读次数:
109
概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此, ...
分类:
其他好文 时间:
2020-01-26 19:18:20
阅读次数:
90
StackOverflowError 比较常见的问题,虚拟机栈中栈帧过多超出栈容量,常见发生在递归方法深度过深。 OutOfMemoryError java heap space java堆内存不足以放下新生成的对象实例,1.考虑是否程序中存在内存泄露导致大量不需要的实例仍然占用内存未被回收2.当前 ...
分类:
编程语言 时间:
2020-01-25 16:59:50
阅读次数:
75