JAVA的内存分为方法区、虚拟机栈、本地方法栈、堆、程序计数器五个部分,除程序计数器外,其它部分都可能出现内存溢出OOM(OutOfMemeryError)。 1、内存溢出和内存泄漏的区别内存溢出 (Out Of Memory):是指程序在申请内存时,没有足够的内存空间供其使用,出现Out Of M ...
分类:
编程语言 时间:
2018-07-11 16:00:49
阅读次数:
135
一、虚拟机栈(VM Stack) 1.1)什么是虚拟机栈 虚拟机栈是用于描述java方法执行的内存模型。 每个java方法在执行时,会创建一个“栈帧(stack frame)”,栈帧的结构分为“局部变量表、操作数栈、动态链接、方法出口”几个部分(具体的作用会在字节码执行引擎章节中讲到,这里只需要了解 ...
分类:
其他好文 时间:
2018-07-11 12:25:01
阅读次数:
182
程序计数器:当前线程所执行的字节码的行动指示器 本地方法栈:为虚拟机使用的native方法服务 java虚拟机栈:描述java方法执行的内存模型,每个方法被执行时都会创建一个栈桢,用于存储局部变量,操作栈,动态链接,方法出口等信息。 每个方法方法创建一个栈桢,栈桢存储了当前方法的数据信息(局部变量) ...
分类:
其他好文 时间:
2018-06-23 11:45:11
阅读次数:
131
深入理解java虚拟机 精华总结(面试)(转) 一、运行时数据区域 3 1.1 程序计数器 3 1.2 Java虚拟机栈 3 1.3 本地方法栈 3 1.4 Java堆 3 1.5 方法区 3 1.6 运行时常量池 4 二、 hotspot虚拟机对象 4 2.1 对象的创建 4 检查 4 分配内存 ...
分类:
编程语言 时间:
2018-06-10 00:28:57
阅读次数:
219
垃圾收集器和内存分配 程序计数器、虚拟机栈、本地方法栈这三个区域和线程的生命周期一致,所以方法结束或者线程结束时,内存自然就跟着回收了。Java堆和方法区,只有在程序处于运行期间才能知道会创建哪些对象,即这部分的内存分配和回收都是动态的, 垃圾回收主要关注的是堆内存 。 对象存活判断 在进行垃圾回收 ...
分类:
其他好文 时间:
2018-06-09 15:29:01
阅读次数:
169
GC算法 垃圾收集器 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了 ...
分类:
编程语言 时间:
2018-06-07 13:59:55
阅读次数:
175
运行时数据区域 线程私有 __程序计数器__ 正在执行的字节码指令的地址(native方法时为undefined) __Java虚拟机栈__ 存储栈帧(局部变量表,操作数栈,动态链接,方法出口)OOM,StackOverflowError __本地方法栈__ 与虚拟机栈类似,是native方法的栈 ...
分类:
其他好文 时间:
2018-06-06 23:49:12
阅读次数:
207
Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: 1. 程序计数器 2. Java虚拟机栈 3. 本地方法栈 4. 堆 5. 方法区。 下面对这五个区域展开深入的介绍。 1. 程序计数器 1.1. 什么是程序计数器? 程序计数器是一块较小的内存空间, ...
分类:
其他好文 时间:
2018-06-04 11:37:55
阅读次数:
130
先看一眼JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代、非堆) 2.虚拟机栈 3.本地方法栈 (Native方法) 4.堆 5.程序计数器 1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前两种标识算法、三种回收算法、两种清除算法、三种收集器 引用计数法 每个对象上都有一个引用 ...
分类:
其他好文 时间:
2018-06-02 13:29:41
阅读次数:
168
要想了解jvm自动内存分配,首先必须了解jvm的运行时数据区域,否则如何知道在哪里进行自动内存分配,如何进行内存分配,回收哪里的垃圾对象? jvm运行时数据区:程序计数器,虚拟机栈,本地方法栈,方法区,堆 程序计数器:由于程序指令是一条一条顺序执行,一条执行完之后必须知道下一条该执行那条指令,那么程 ...
分类:
其他好文 时间:
2018-05-29 01:51:40
阅读次数:
177