1、java虚拟机内存结构 java程序的执行依赖于JAVA虚拟机(运行与机器内存中),其开始于一个main()方法,如果在一台机器上运行三个java程序,就需要三个java虚拟机。 1.1 程序计数器 功能:一块较小的内存,执行引擎Execution Engine通过改变计数器的值选取下一条需要执 ...
分类:
其他好文 时间:
2019-08-13 15:51:15
阅读次数:
99
1、什么是jvm? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 2、jvm 运行时数据区域 堆和方法区是所有线程共有的。 虚拟机栈,本地方法栈和程序计数器则 ...
分类:
其他好文 时间:
2019-08-13 13:19:16
阅读次数:
92
前言:JVM中除了程序计数器,其他的区域都有可能会发生内存溢出。 0.什么是内存溢出 当程序需要申请内存的时候,由于没有足够的内存,此时就会抛出OutOfMemoryError,这就是内存溢出。 1.内存泄漏和内存溢出区别与联系 内存泄漏:系统分配的内存没有被回收。 内存溢出:分配的内存空间超过系统 ...
分类:
其他好文 时间:
2019-08-11 17:04:47
阅读次数:
104
JVM总结(2)java内存区域、字节码执行引擎 1、内存区域 程序计数器:知道线程执行位置,保证线程切换后能恢复到正确的执行位置。 虚拟机栈:存栈帧。栈帧里存局部变量表、操作栈、动态连接、方法返回地址。局部变量表又存了各种基本数据类型和对象引用(句柄)。 本地方法栈:为Native方法服务 堆:存 ...
分类:
其他好文 时间:
2019-08-11 10:57:00
阅读次数:
98
发现网上有两个版本的JVM内存划分,一个是按照《深入理解JVM虚拟机》上的版本,包含程序计数器等,按照是否线程共享划分。 另一个我觉得更好记一些,也更适合我自己,在这里记录一下。 首先上思维导图: 一个个来说道吧。 堆内存 heap 堆内存主要被划分为新生代和老年代(差不多的意思) 基本上所有对象实 ...
分类:
其他好文 时间:
2019-08-06 20:00:38
阅读次数:
88
Java 虚拟机可以看作一台抽象的计算机,如同真实的计算机,它也有自己的指令集和运行时内存区域。 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存(运行时内存区域)划分为若干个不同的数据区域。 如下图所示: 一、程序计数器 Program Counter Register 定义:程序 ...
分类:
编程语言 时间:
2019-08-05 15:55:51
阅读次数:
170
本文是个人内容总结,详细内容扫描二维码 1.前文回顾 1.前文回顾 脑子里一定要有一个会动的图: 1、启动一个线程执行业务代码(执行main方法就是开启一个main线程); 2、线程对应的程序计数器PC来记录程序执行到哪行字节码指令(线程与PC是1:1关系); 3、调用方法时会创建一个“栈帧”,放入 ...
分类:
其他好文 时间:
2019-08-03 15:04:10
阅读次数:
245
JVM内存管理 JVM将内存划分为5个部分:堆、方法区、PC寄存器(也叫程序计数器)、虚拟机栈、本地方法栈 PC寄存器(程序计数器):用于记录当前线程运行时的位置,每一个线程都有一个独立的程序计数器,线程的阻塞、恢复、挂起等一系列操作都需要程序计数器的参与,因此必须是线程私有的。 java 虚拟机栈 ...
分类:
编程语言 时间:
2019-08-02 14:49:18
阅读次数:
89
JVM内存模型 Java虚拟机所管理的内存区域,也称为运行时数据区,分为以下几个运行时数据区,如图所示 程序计数器:当前程序所执行字节码的行号指示器 程序计数器(Program Counter Register) 是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型 ...
分类:
其他好文 时间:
2019-08-02 14:35:07
阅读次数:
130
程序计数器 记录字节码指令地址,占用空间很小,基本无异常抛出 本地方法栈 native方法区 方法区 所有线程共享,主要存储类的信息,常量池,方法数据,方法代码。 堆内存 JVM所有线程共享,所有对象和数组都在堆上进行分配,这部分内存可通过GC回收,申请不到内存空间会抛出 虚拟机栈 线程私有,随线程 ...
分类:
其他好文 时间:
2019-07-23 14:58:59
阅读次数:
84