我理解点jvm那点事

关于Jvm的学习,网上介绍的相关文章视频实在是非常的多,只要随便搜搜都有大把的资料可以学习。但是为什么还是有很多人不了解jvm呢。可能主要就是理解能力不行,或者理解的有问题,以至于学习了很多次,但是总也记不住。

 

如果就是了解虚拟机,进行简单的调优,其实是比较简单的。我们先来介绍下关于jvm的简单构成。当我们只想java指令的时候,比如先写一个hello.java文件。然后javac编译成hello.class文件,再执行java hello,这个时候就启动了一个jvm。首先从加载类开始,jre运行环境等。将hello.class文件分散存储到jvm对应的位置。

 

Jvm逻辑上可以分成几个区域,堆、栈、方法区、本地方法区、程序计数器。

堆:保存对象的实体。

栈:保存线程运行时的各种数据。

方法区:保存类里的常量、静态方法、类的模板结构等信息。

本地方法栈:本地方法运行时保存数据等地方。

程序计数器:运行时,线程保存执行指针的地方。

 

一般情况下,栈里的内容不用管,因为不断的押入弹出,会自动的管理栈的内容,随着进程的运行,该销毁的早就销毁了,不需要做回收。方法区和本地方法栈和计数器都不用管,用到垃圾回收机制的一般都是指的堆里的对象了。

 

Java编程就时面向对象的编程,不停的产生很多的对象,有些会存活的很长时间,有些可能很快就没用了。无用的对象占据着大量的内存,java开发的好处就时我们不用去关心内存,虚拟机已经帮我们处理好了。

 

这个非常好用的垃圾自动回收机制,帮了我们大忙,我也还是了解下怎么运行的。

 

堆内存也会分成好几块,年轻代和老年代和元数据区。年轻代占1/3,老年代占2/3。新生成的对象放在年轻代里代出生区,经过一段时间,年轻带里代from区和to区进行对象回收。经过15次回收后,没有被清理的对象统统进入老年代。

 

等到老年代差不多满了,就要进行full gc了。这个时候jvm就可能出现短暂的暂停。

 

我们调优的目的就是经可能的减少full gc的出现。

 

好了,希望对我有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值