JAVA入门基础知识关于JVM(虚拟机)的一些常识随笔

JVM基础知识
开始了解JAVA虚拟机的一些知识,JAVA虚拟机由几块组成
程序计数器:作用是当前线程所执行字节码的行号指示器,工作原理
是通过改变行号字节码的值来执行下一条要执行字节码命令。
JAVA虚拟机栈(java Virtual Machine Stacks):栈的线程是私有的,它的生命周期和线程相同。每个方法被执行的时候会创建一个栈帧用于储存局部变量表,操作栈,动态链接等。每个方法调用的开始和结束是一个栈入栈到出栈的过程。
局部变量所需要的内存空间在编译期间就会分配完成。
:JAVA的堆是JVM中内存最大的一块,虚拟机启动的时候就创建,
被所有线程共享内存的区域,唯一的目的就是存储实例,而且是回收
机制重点回收对象。
方法区:和JAVA的堆一样,是各个线程共享内存的区域,这里主要储存
的由方法运行时候的常量,静态变量,类信息,即时编译器编译的
代码等数据等。
本地方法栈:本地方法栈和栈的区别是虚拟机栈执行的是JAVA方法服务
,而本地方法栈则是为虚拟机使用到的Native方法服务。
其中sun Hotspot直接把本地方法栈和栈合二为一
由上面五种构成

JAVA的垃圾回收
其实对于JAVA的垃圾回收机制有几个疑问
1、那些内存要回收?
判断该对象是否是垃圾,在JAVA的机制中引用了
一个叫引用计数器的东西,他会给每个当有引用的地方,计数器就加1
,引用失效就减一,只要计数器为0就会被视为不可在被使用的。
2、什么时候回收?
//TODO
3、如何回收?
//TODO

JAVA垃圾回收算法
1、标记清除算法
2、标记整理算法
3、复制算法
4、分代收集算法:分代收集算法其实是根据对象存活周期来
根据每个年代的特点使用最合适回收算法,如果是新生代则
使用复制算法,因为新生代的都是朝生夕死的状态有大量垃圾需要回收,
老年代默认都是GC迭代15次以上的内存大多数都是存活
对象使用标记整理法去回收内存是最好的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值