加入收藏 | 设为首页 | 会员中心 | 我要投稿 衢州站长网 (https://www.0570zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

程序员从宏观、微观角度浅析JVM虚拟机!

发布时间:2019-03-22 15:37:26 所属栏目:站长百科 来源:架构月亮姨
导读:副标题#e# 1.问题 JAVA文本文件如何被翻译成CLASS二进制文件? 如何理解CLASS文件的组成结构? 虚拟机如何加载使用类文件的生命周期? 虚拟机系列诊断工具如何使用? 虚拟机内存淘汰机制? 虚拟机指令集架构? 2.关键词 编译,魔数,常量池,字面量,数据表,堆栈

jvm内存区域:方法区,虚拟机栈,本地方法栈,堆,程序计数器;

  • 程序计数器:字节码行号指示器,每个线程需要一个程序计数器
  • 虚拟机栈:方法执行时创建栈帧(存储局部变量,操作栈,动态链接,方法出口)编译时期就能确定占用空间大小,线程请求的栈深度超过jvm运行深度时抛StackOverflowError,当jvm栈无法申请到空闲内存时抛OutOfMemoryError,通过-Xss,-Xsx来配置初始内存
  • 本地方法栈:执行本地方法,如操作系统api接口
  • 堆:存放对象的空间,通过-Xmx,-Xms配置堆大小,当堆无法申请到内存时抛OutOfMemoryError
  • 方法区:存储类数据,常量,常量池,静态变量,通过MaxPermSize参数配置
  • 对象访问:初始化一个对象,其引用存放于栈帧,对象存放于堆内存,对象包含属性信息和该对象父类、接口等类型数据(该类型数据存储在方法区空间,对象拥有类型数据的地址)

7.2内存回收算法

内存回收概述:

虚拟机栈、本地栈和程序计数器在编译完毕后已经可以确定所需内存空间,程序执行完毕后也会自动释放所有内存空间,所以不需要进行动态回收优化。

jvm内存调优主要针对堆和方法区两大区域的内存。

引用:强Strong,软sfot,弱weak,虚phantom,强引用不会回收,软引用在内存达到溢出边界时回收,弱引用在每次回收周期时回收,虚引用专门被标记为回收对象。

(编辑:衢州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读