JVM 是一个虚拟化的操作系统,类似于 Linux 和 Window,只是他被架构在了操作系统上进行接收 class 文件并把 class 翻译成系统识别的机器码进行执行,即 JVM 为我们屏蔽了不同操作系统在底层硬件和操作指令的不同。
因此,JVM 最重要的作用浮出水面,即跨平台性。由于 JVM 为 java 程序屏蔽了操作系统底层的细节,Java 只需要关心如何编译,如何让加载进 JVM 即可。
由于 JVM 接收的是 Class 文件,而不是接收特定的语言,因此只要某种语言可以编译成 Class 文件,就可以在 JVM 上运行,这些语言有 Groovy、Kotlin、Scala 等等。因此 JVM 的另一个重要特性就是语言无关性,即跨语言。
New(年轻代)
Tenured(年老代)
永久代(Perm)
其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过 -XX:PermSize -XX:MaxPermSize 等参数调整其大小。
年轻代(New):年轻代用来存放JVM刚分配的Java对象
年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代
永久代(Perm):永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,设置原则是预留30%的空间。
Eden:Eden用来存放JVM刚分配的对象
Survivor1
Survivro2:两个Survivor空间一样大,当Eden中的对象经过垃圾回收没有被回收掉时,会在两个Survivor之间来回Copy,当满足某个条件,比如Copy次数,就会被Copy到Tenured。显然,Survivor只是增加了对象在年轻代中的逗留时间,增加了被垃圾回收的可能性。
1. 接口描述 接口请求域名: bm.tencentcloudapi.com 。 查询自定义机型部件信息...
每买一个 域名 都要备案吗?买域名是否需要备案,主要取决于域名的用途。如果域...
虚拟主机 数据库与空间关系?虚拟主机的数据库和空间,都是用来存储网站数据、文...
利用边缘计算和物联网设备进行实时分析具有广阔的发展前景,但为边缘部署设计的...
尽管Kubernetes的最新版本的发布有些延迟,但新的Kubernetes 1.19版正式发布,并...
我们四周年的 网站建设 大赛已经结束两周,如果读过上周的周三网站,你会知道我...
qq 企业邮箱 好用吗?整体还是不错,使用较广。这主要是因为qq在我们日常生活中...
拼音 域名 在国内一向很有市场,尤其是含义好品相好的类型,近日就有一枚很漂亮...
用户在迁移上云的时候,需要将云下的的Azkaban任务迁移上云,之前通过用户在Data...
云服务器 内存不够了怎么办? 云服务器 内存,是其配置参数之一。内存大小也是影...