浅谈JVM以及 JVM内存划分

之前在无意中听到同事在讨论JAVA  的JVM,于是利用休息时间便去学习了一下JVM,为防止以后忘记 便写下随笔 方便以后查看

JVM(Java Virtual Machine)简称java虚拟机,是一种软件,也是用来规定计算机的一种规范,java是一种跨平台语言,之所以可以跨平台,就是因为java虚拟机可以屏蔽具体平台的信息,从而我们的程只需要生成JVM的字节码,不需要关注具体平台,便可以跨平台运行。

JVM的内存区域划分主要有五个区域

一、方法区

用来存放java类的信息、静态变量、常量、以及我们即时编译后的java代码,属于共享内存区。

二、堆

用来存放对象的实例、以及数组、此区域是JVM管理的最大区域,线程共享。

三、虚拟机栈

用来存放java方法(局部变量表这里指的是基本数据类型)、方法出口、线程私有、生命周期与线程一直。

四、本地方法栈

用来存放native(本地)方法、区别于 java虚拟机栈是为虚拟机运行的方法服务即字节码、本地方法栈为native方法服务。

五、程序计数器

虚拟机字节码的地址或者undefined、如果线程正在执行一个方法,计数器记录的就是正在执行的虚拟机字节码的地址 ,如果运行的是native,计数器记录的便是undefined

此区域内存空间小、线程私有。

猜你喜欢

转载自www.cnblogs.com/lmz545432913/p/12341261.html
今日推荐