一、栈帧结构 讲栈帧结构有必要回顾一下前文Class文件中的Code属性结构,如下图。 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机栈的栈元素。每一个方法从调用开始到执行完成,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法 ...
分类:
其他好文 时间:
2018-07-29 15:12:21
阅读次数:
177
在运行时数据区 哪些是线程和线程私有的 01 线程共享 堆 方法区 02 线程私有 虚拟机栈 本地方法栈 程序计数器 下面我来具体的介绍一下这几个名词 程序计数器 : 当前线程执行字节码文件的行号指示器能够在线程切换后找到自己正确的位置 唯一一个不会导致内存溢出 outofmeorm 虚拟机栈: 基 ...
分类:
其他好文 时间:
2018-07-27 23:15:06
阅读次数:
209
String内存位置说明 显式的String常量 第一句代码执行后就在常量池中创建了一个值为holten的String对象; 第二句执行时,因为常量池中存在holten所以就不再创建新的String对象了。 此时该字符串的引用在虚拟机栈里面。 String对象 Class被加载时就在常量池中创建了一 ...
分类:
编程语言 时间:
2018-07-25 01:06:54
阅读次数:
166
本章内容 本章介绍,JVM运行过程中是怎样划分区域的,堆,栈,方法区,这些是什么鬼?每个区域存储哪些内容? 区域介绍 程序计数器 虚拟机栈 本地方法栈 堆 方法区 本章已Hotspot为例,虚拟机栈和本地方法栈,是合并的 程序计数器(线程私有) 1 作用 存储程序当前执行指令的地址 2 注意 JVM ...
分类:
编程语言 时间:
2018-07-24 17:43:25
阅读次数:
138
一.运行时数据区 1.线程共享和线程私有: 01.线程共享: 堆,方法区 02.线程私有: 虚拟机栈,本地方法栈,程序计数器 2.程序计数器 当前线程执行字节码文件的行号指示器 能够在线程切换之后,找到自己正确的位置 是唯一一个不会导致内存泄漏(OutOfMemory,OOM)的区域 3.虚拟机栈: ...
分类:
其他好文 时间:
2018-07-24 13:10:51
阅读次数:
136
内存溢出异常 除了程序计数器之外,jvm的其他几个运行时区域都存在着OOM异常的可能性 java堆溢出 对象数量达到最大堆的容量限制后 虚拟机栈和本地方法栈溢出 线程请求的栈深度大于虚拟机所允许的最大深度 虚拟机在扩展栈时无法申请到足够的内存空间 方法区和运行时常量池溢出 生成大量的class的情况JDK的可视化工具 JConsole:java监视与管理控制台 概述;类;vm摘要;MBe
分类:
其他好文 时间:
2018-07-22 12:03:41
阅读次数:
206
java内存区域 程序计数器 因为java可以多线程并发执行,因此,为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器。记录正在执行的虚拟机字节码指令的地址。 这个区域不会产生内存溢出异常。 栈 java虚拟机栈 栈中主要存放了编译期可知的四类八种基本数据类型存(逻辑型 boo ...
分类:
其他好文 时间:
2018-07-21 19:51:49
阅读次数:
200
when ? what ? why ? how ? 为什么要进行垃圾回收? 当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们需要对内存动态分配和内存回收技术实施必要的监控和调节。 垃圾回收的区域是哪块? JVM 内存结构分成程序计数器、虚拟机栈、本地方法栈、堆、 ...
分类:
其他好文 时间:
2018-07-20 19:02:31
阅读次数:
158
jvm内存模型由方法区,堆、虚拟机栈、本地方法栈、程序计数器, 1.程序计数器 每个线程都会有自己私有的程序计数器,可以看做当前线程所执行的字节码的行号指示器。 字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程上下文切换。 线程恢复时,都要依赖 ...
分类:
其他好文 时间:
2018-07-18 14:23:49
阅读次数:
139
运行时数据区域 1、线程独有的内存区域 程序计数器空间较小,是当前线程执行字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 如果线程执行的是Java方法,记录的是正在执行的虚拟机字节码指令的地址;如果执行的是Native方法,则为空 虚拟机栈生命周期 ...
分类:
编程语言 时间:
2018-07-17 12:36:22
阅读次数:
166