JVM 总结

一、JVM 体系结构与工作方式

看了JVM 体系结构与工作方式, 一直觉得很像个单片机,只不过有很多特别的地方,当然最大的特别在于一个是硬件,一个软件,所以JVM在实现上更为灵活。

由下面4部分组成:

1.类加载器  --- ClassLoader 加载进来的.class文件放在堆中 ,需要分配内存

2.执行引擎  --- 一个执行引擎对应一个实例线程在栈中  ,需要分配内存

3.内存区    --- 一个模拟实际机器上的寄存器,PC指针  , 需要分配内存

4.本地方法区 --- 调用C/C++   ,需要分配内存

执行引擎工作过程:

这个栈中有指令集,PC寄存器,局部变量区,操作栈 ,具体执行过程和单片机没有什么两样。

二、内存管理

主要分为栈和堆,静态分配和动态分配(栈内存分配, 堆内存分配)

栈:有PC寄存器,多个栈帧。存储局部变量,对应着一个线程序, 不用关心数据一致性和同步锁的问题

堆:有方法区,本地方法区,运行时常量池。存储对象,线程共享区,需要注意同步,一致性问题  ,还存放.class加载进来时的各种信息。

三、内存回收策略

静态内存:在编译时就确定的内存。局部变理包括原生数据类型和对象的引用都是静态分配的,当程序执行结束就回收,这些内存空间是在栈上分配的,所以这个方法结束,栈没了,这些内存也就释放了。 

动态内存回收:垃圾收集器

只要是某个对象不再被其他活动对象引用,那么这个对象就可以被回收了。

基于分代的垃圾收集算法(hotspot):

思路:分为年轻代和老年代,新生成的对象被分在老年代,如果对象经过几次回收后仍然存在,那么就会被分到老年代, 老年代扫描不频繁,以提高效率。 

Young区:Eden   Survivor(from | to)  始终保持Survivor中一个是空的

Old区:这里满了之后就会触发GC

Perm区:主要放的是Class对象

最后:JVM 作用在于跨平台, 一处编译到处运行是和其他语言的一个很大的不同。 





 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值