007、JVM总结一-创新互联

自己乱捣鼓,乱总结一下关于JVM的重点,大白话写的。

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于做网站、网站设计、彭水苗族土家族网络推广、微信平台小程序开发、彭水苗族土家族网络营销、彭水苗族土家族企业策划、彭水苗族土家族品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;成都创新互联公司为所有大学生创业者提供彭水苗族土家族建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
  • JVM的内存布局
  • 对象的创建过程
  • 垃圾回收
  • 类加载过程
一、JVM内存布局 1、程序计数器

记录字节码指令运行到哪个地址,记录位置用的,不会存在栈溢出和内存溢出错误,属于线程私有的。

2、虚拟机栈

  每执行到一个方法,会在虚拟机栈中开辟一个栈帧,也是线程私有,会存在栈溢出和内存溢出错误。

  栈帧,用于存储:局部变量表、操作数栈、动态连接、方法出口等信息。

3、本地方法栈

  本地方法栈和虚拟机栈作用差不多,区别是本地方法栈执行的是本地native方法,而虚拟机栈是为字节码中的Java方法服务的。

4、Java堆

  堆是存放对象实例信息的地方,也是JVM内存模型中占用内存大的区域,属于所有线程共享的区域,会出现内存溢出错误。

5、方法区

  方法区用于存储已被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码缓存等数据,也是所有线程共享的区域,会出现内存溢出错误。

  注意JDK1.7和JDK1.8,在对方法区实现的区别。

二、对象的创建过程

JVM在Java堆中对象分配、布局和访问的全过程。

此章节中的对象仅为普通Java对象,不包括数组和Class对象。

1、对象的创建
  • 当程序计数器执行到了new的字节码指令时,首先需要去检查这个指令后的参数能否在常量池中找到一个符号引用,并且判断这个符号引用的类是否已经被加载、验证、准备和解析过,若没有,则还需执行此流程。
  • 确定改类被加载过后,就在Java堆中分配一块内存给改对象实例,并且对此对象实例进行必要的设置,比如确定该对象是哪个类的实例、元数据信息等。
  • 最后进行方法,根据程序员字节码的指令进行对象实例的初始化。
  • 这时,一个真正可用的对象就被创造出来了。
2、对象的内存布局

一个对象实例分为三部分:

  • 对象头:存储对象自身运行时所需要的数据信息。
  • 实例数据:对象真正存储的有效信息。
  • 对齐填充:没有实际作用,仅仅作为占位符。
3、对象的访问

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文标题:007、JVM总结一-创新互联
网页地址:http://ybzwz.com/article/dejjed.html