Java语言是一门自动内存管理的语言,不再需要的对象可以通过垃圾回收自动进行内存释放。 Java运行时内存区域划分 JVM将Java程序运行时内存区域划分成以下几个部分: 程序计数器(Program Counter Register, PC) java虚拟机栈 本地方法栈 java堆 方法区,方法区 ...
分类:
编程语言 时间:
2020-03-26 19:14:38
阅读次数:
70
常见的JAVA虚拟机HotSpot虚拟机运行时数据库由5部分构成:方法区,堆,虚拟机栈,本地方法栈,程序计数器。下面列举各个部分可能出现的异常及其出现原因。 1.方法区存放的已被虚拟机加载的类型信息,常量、静态变量、即时编译器编译后的代码缓存等数据。可能出现的异常有OutOfMemoryError, ...
分类:
编程语言 时间:
2020-03-23 00:16:03
阅读次数:
91
1.程序计数器:指向当前线程执行的字节码指令文件的地址和行号 为了在cpu将线程挂起,进行线程切换时,能够记录当前线程的执行进程,正确安全的执行完.2.虚拟机栈:(存储当前线程运行的方法的栈帧,只有等方法执行完栈帧才会出栈) 测试看在同一给方法中的多个方法. 用来执行对应的方法所需的数据,通过对方法 ...
分类:
其他好文 时间:
2020-03-22 14:06:10
阅读次数:
66
进程模型: 1.一个进程是对正在运行程序的抽象。 2.计算机中多个程序的运行被排列成多个顺序进程(简称进程) 3.进程之间的快速切换称之为多道程序设计。 4.多道程序之间的切换时间是由物理计数器和各个进程的逻辑程序计数器相互作用决定的。逻辑计数器是专门用来记录物理计数器的,相当于一个变量。 5.多道 ...
分类:
编程语言 时间:
2020-03-18 21:59:38
阅读次数:
60
根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 所 ...
分类:
编程语言 时间:
2020-03-17 21:19:22
阅读次数:
75
程序计数器 虚拟机栈 本地方法栈 堆 (新生代和老生代) 新生代(eden,two survivor) 老生代(永久代(现在变成元数据)) 元数据->类的字节流,常量,静态方法 (metaSpace的默认值在64位中20.75M)当第一次满的时候回触发GC; GC的算法: 引用计数法,标识清理法,复 ...
分类:
其他好文 时间:
2020-03-17 19:24:31
阅读次数:
72
1、虚拟机运行时数据区域 1.1、运行时数据区 JAVA虚拟机在执行JAVA程序过程中,会把他所管理的内存划分为若干个数据区域。 JAVA虚拟机运行时数据区 1.2、程序计数器 程序计数器可以看做是, 程序被执行时,内部字节码对应行号的指示器。这块空间很小,是线程私有的,也就是每个线程都有自己对应的 ...
分类:
编程语言 时间:
2020-03-14 20:23:28
阅读次数:
70
PC Register介绍 JVM中的程序计数器(Program Counter Register),Resgiter 的命名原于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。 这里,并非是广义所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴 ...
分类:
其他好文 时间:
2020-03-14 18:27:48
阅读次数:
84
1.内存模型以及分区。 内存模型主要由方法区、堆、栈、本地方法栈、程序计数器。 方法区:供各线程共享的运行时的内存区域。存储了类信息,运行时常量池等,还存放static变量。 堆:通过new关键字,创建对象都会使用到堆内存。存放所有new出来的对象,只保存对象本身,不保存对象的引用。 栈:程序运行时 ...
分类:
其他好文 时间:
2020-03-12 18:45:22
阅读次数:
71
VM 概念模型 1:程序计数器(Program Counter Register) (1)比喻:可以看做为线程所执行的字节码的行号显示器 (2)与线程的关系:每个线程都有自己的程序计数器 (3)作用:存放当前线程正在执行的虚拟机字节码指令地址 2:虚拟机栈(VM Stack) 帧栈 (1) 释义:每 ...
分类:
其他好文 时间:
2020-03-11 01:09:53
阅读次数:
53