深入JVM之Java内存模型

深入JVM之Java内存模型

这里写图片描述
所有的程序代码都必须保存在.java的文件之中,这些称为源代码。而这些源代码并不能直接执行,必须使用javac.exe命令将其编译为.class文件,而后利用java.exe命令在JVM进程之中解释此程序。
实际上当JVM将所需要的.class文件加载到JVM进程之中,那么这个过程就需要一个类加载器(ClassLoader),有了类加载器的好处在于:可以随意指定程序.class文件的所在路径。
JVM:Java虚拟机,所有的程序都要求运行在JVM上,是因为考虑到了可移植性问题,可是如果要想真正去执行程序,绝对不可能离开操作系统的支持。
在Java里面可以使用native实现本地C函数的调用。但是这些都属于程序运行的辅助手段,而真正的程序运行都在“运行时数据区”之中。

这里写图片描述
在整个的运行时数据区之中,分为如下几块内存空间:
●堆内存:保存所有引用数据类型的真实信息。
●栈内存:基本类型、运算、指向堆内存的指针。
●方法区:所有定义的方法的信息都保存在方法之中,此区属于共享区。
●程序计数器:是一个非常小的内存空间,小的可以忽略。用于指向下一个将要执行的代码。
●本地方法栈:每一次执行递归的方法处理的时候实际上都会将上一个方法入栈。

这里写图片描述这里写图片描述这里写图片描述
在整个Java之中存在有对象池的概念,对象池是对整个常量池的一个规则破坏,因为在JVM启动的时候所有的常量都已经分配好内存空间了,但是String中的intern()方法却可以打破这种限制,动态的进行常量池的内容设置。

这里写图片描述
对于运行时数据区直接和Java中的线程对象有关联。
关于共享区域大还是独享区域大?共享区域大。所以最后重点落在了对堆内存操作的合理控制上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值