JVM分为类的加载生命周期和gc垃圾回收两个大的方面

首先是类的生命周期, 类的加载: --> 记载字节码 ---> 这个过程有类的加载起参与,双亲委托机制()
--> 验证字节码 ---> 确保加载的类信息符合JVM规范,没有安全方面的问题
--> 准备 ---> 正式为类变量(static变量)分配内存并设置类变量初始值的阶段,这些内存都将在方法去中进行分配
--> 解析 ---> 虚拟机常量池的符号引用替换为字节引用过程
--> 初始化
---> 初始化阶段是执行类构造器<clinit>()方法的过程。类构造器<clinit>()方法是由编译器自动收藏类中的所有类变量的赋值动作和静态语句块(static块)中的语句合并产生
---> 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化
---> 虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确加锁和同步
---> 当范围一个Java类的静态域时,只有真正声名这个域的类才会被初始化

--> 使用 ---> 正常调用
--> 卸载 ---> 等待gc回收

Java中,栈的大小通过-Xss来设置,当栈中存储数据比较多时,需要适当调大这个值,否则会出现java.lang.StackOverflowError异常。
在Java中,一个空Object对象的大小是8byte(new Object), 因为所有的Java非基本类型的对象都需要默认继承Object对象,
因此不论什么样的Java对象,其大小都必须是大于8byte。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。