一、起源 1960年Lisp语言: 第一门真正使用内存动态分配和垃圾回收的语言。 二、概要 线程相关:程序计数器、虚拟机栈、本地方法栈,不需要考虑垃圾回收 Java堆、方法区:需要考虑垃圾回收 三、垃圾回收算法 1 引用计数算法 2 可达性分析算法 垃圾收集算法 1 标记-清除算法 Mark-Swe ...
分类:
编程语言 时间:
2019-08-23 22:12:47
阅读次数:
122
《深入理解 Java 虚拟机》学习 垃圾回收算法 1. 说明 程序计数器,虚拟机栈,本地方法栈三个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性 Java 堆和方法区这部分内存的分配和回收都是动态的,垃圾收集器所关注的是这部分内存 新生代和老年代 Java 中的堆是 JVM 所管 ...
分类:
编程语言 时间:
2019-08-23 13:20:24
阅读次数:
83
1、 JVM的内存模型 a) Java虚拟机的内存空间分为五个部分:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区 b) 程序计数器:程序计数器中存放的是当前线程正在执行的字节码指令的地址。如果当前线程执行的一个本地方法,那么当前的程序计数器为空。 i. 字节码解释器通过程序计数器来依次读取指 ...
分类:
其他好文 时间:
2019-08-19 13:00:34
阅读次数:
59
1. JVM运行时划分哪几个区域?哪些区域是线程共享的?哪些区域是线程独占的? JVM运行时一共划分:程序计数器、虚拟机栈、堆、本地方法栈、方法区。 线程共享的数据区域:堆、方法区。 线程独享的数据区域区域:程序计数器、虚拟机栈、本地方法栈。 2. 这几个内存区域分别存放什么数据? 程序计数器记录当 ...
分类:
其他好文 时间:
2019-08-17 09:16:00
阅读次数:
74
1、什么是jvm? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 2、jvm 运行时数据区域 堆和方法区是所有线程共有的。 虚拟机栈,本地方法栈和程序计数器则 ...
分类:
其他好文 时间:
2019-08-13 13:19:16
阅读次数:
92
JVM总结(2)java内存区域、字节码执行引擎 1、内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。 虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。 本地方法栈:为Native方法服务 堆:存 ...
分类:
其他好文 时间:
2019-08-11 10:57:00
阅读次数:
98
Java 虚拟机可以看作一台抽象的计算机,如同真实的计算机,它也有自己的指令集和运行时内存区域。 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存(运行时内存区域)划分为若干个不同的数据区域。 如下图所示: 一、程序计数器 Program Counter Register 定义:程序 ...
分类:
编程语言 时间:
2019-08-05 15:55:51
阅读次数:
170
JVM内存管理 JVM将内存划分为5个部分:堆、方法区、PC寄存器(也叫程序计数器)、虚拟机栈、本地方法栈 PC寄存器(程序计数器):用于记录当前线程运行时的位置,每一个线程都有一个独立的程序计数器,线程的阻塞、恢复、挂起等一系列操作都需要程序计数器的参与,因此必须是线程私有的。 java 虚拟机栈 ...
分类:
编程语言 时间:
2019-08-02 14:49:18
阅读次数:
89
程序计数器 记录字节码指令地址,占用空间很小,基本无异常抛出 本地方法栈 native方法区 方法区 所有线程共享,主要存储类的信息,常量池,方法数据,方法代码。 堆内存 JVM所有线程共享,所有对象和数组都在堆上进行分配,这部分内存可通过GC回收,申请不到内存空间会抛出 虚拟机栈 线程私有,随线程 ...
分类:
其他好文 时间:
2019-07-23 14:58:59
阅读次数:
84
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域, 包含程序计数器、虚拟机栈、本地方法栈、Java堆、方法区(运行时常量池)、直接内存等,不同的版本会有所差异 各区域的作用: 1、程序计数器:较小的内存空间,当前线程执行的字节码的行号指示器;各线程之间独立存储,互 ...
分类:
其他好文 时间:
2019-07-21 01:37:45
阅读次数:
92