良心制作,JVM原理速记复习Java虚拟机总结思维导图面试必备。
一、运行时数据区域
线程私有
程序计数器
记录正在执行的虚拟机字节码指令的地址(如果正在执行的是Native方法则为空),是唯一一个没有规定OOM(OutOfMemoryError)的区域。
Java虚拟机栈
每个Java方法在执... ...
分类:
编程语言 时间:
2019-11-16 23:46:01
阅读次数:
156
程序计数器 线程私有 指向了正在执行的虚拟机字节码指令的地址;如果是本地方法,数值为空 没有 OutOfMemoryError 错误的区域 Java虚拟机栈 线程私有; 生命周期与线程相同; 代表着 Java 方法执行的内存模型:每个方法执行时的同时会创建一个栈帧(Stack Frame)用于存放 ...
分类:
其他好文 时间:
2019-11-12 21:53:42
阅读次数:
122
一、jvm内存模型 JVM 内存模型主要分为堆、程序计数器、方法区、虚拟机栈和本地方法栈 1、堆 1.1、堆是 JVM 内存中最大的一块内存空间。 1.2、该内存被所有线程共享,几乎所有对象和数组都被分配到了堆内存中。 1.3、堆被划分为新生代和老年代,新生代又被进一步划分为 Eden 和 Surv ...
分类:
编程语言 时间:
2019-10-31 01:18:47
阅读次数:
120
1、 简述JVM垃圾回收算法分类 常用的垃圾收集算法 JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生、随线程而灭,因此这几个区域的内存分配和回收都具备确定性,就不需要过多考虑回收的问题,因为方法结束或者线程结束时, ...
分类:
其他好文 时间:
2019-10-29 14:10:14
阅读次数:
86
运行时数据区域 jdk 1.8之前与之后的内存模型有差异,方法区有变化(https://cloud.tencent.com/developer/article/1470519)。 java的内存数据区域划分: 程序计数器 虚拟机栈 本地方法栈 堆 方法区 程序计数器(Program Counter ...
分类:
编程语言 时间:
2019-10-27 12:54:47
阅读次数:
93
线程封闭 在多线程的环境中,我们经常使用锁来保证线程的安全,但是对于每个线程都要用的资源使用锁的话那么程序执行的效率就会受到影响,这个时候可以把这些资源变成线程封闭的形式。 1、栈封闭 所谓的栈封闭其实就是使用局部变量存放资源,我们知道局部变量在内存中是存放在虚拟机栈中,而栈又是每个线程私有独立的, ...
分类:
编程语言 时间:
2019-10-23 00:32:58
阅读次数:
117
一、哪些内存可以回收 JVM 的内存区域中,程序计数器、虚拟机栈和本地方法栈这 3 个区域是线程私有的,随着线程的创建而创建,销毁而销毁,因此不用回收。 垃圾回收的重点就是关注堆和方法区中的内存了,堆中的回收主要是对象的回收,方法区的回收主要是废弃常量和无用的类的回收。 二、什么时候可以被回收 一般 ...
分类:
编程语言 时间:
2019-10-17 01:31:18
阅读次数:
114
2.虚拟机栈 定义:虚拟机栈(Java Virtual Machine Stacks)就是每个线程运行需要的内存空间,栈由一个一个的栈帧(Frame)组成,栈帧就是每个方法运行时需要的内存(方法的参数、局部变量、返回地址) 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法 问题分析 垃圾回收 ...
分类:
编程语言 时间:
2019-10-14 23:34:27
阅读次数:
106
JDK1.8之前,java内存分为 线程共享区:堆、方法区、直接内存(非运行时数据区的一部分)。线程私有区:程序计数器、虚拟机栈、本地方法栈。 JDK1.8开始,虚拟机取消了方法区,改为元空间。 程序计数器: 程序计数器是一块小的内存空间,存放线程执行的信息,如字节码的行号指示器还有分支、循环、跳转 ...
分类:
编程语言 时间:
2019-10-09 12:09:02
阅读次数:
93
[TOC] Java内存区域 运行时数据区 & Java 内存结构 & Java 内存区域 JDK 1.8 之前: JDK 1.8 : 线程私有的: 程序计数器 虚拟机栈 本地方法栈 线程共享的: 堆 方法区(1.8 转到直接内存的元空间) 直接内存 (非运行时数据区的一部分) 1. 程序计数器 程 ...
分类:
其他好文 时间:
2019-10-05 10:42:22
阅读次数:
113