jvm
2022-01-19 15:30:18 0 举报
jvm
作者其他创作
大纲/内容
java程序执行引擎
.java
b
classloader类加载器
方法区
栈帧1
程序计数器
DirectByteBuffer
10
局部变量表
0
栈帧100
栈
nio中通过dirrectbuffer指向直接内存
public class A {private a =10;private b =10;private c= 0;stactic d =1000; void run(){A a1 = new A();}
线程共享
操作数栈
.class字节码文件
堆外内存(直接内存),需要手工释放内存,分配内存较慢,但是read,write快,netty可以采用的是直接内存,nettty创建直接内存有一个clear对象可以自动去释放直接内存,避免人工来释放直接内存
堆存放对象和数组,jdk8后存类的静态变量,java中一切皆对象,所以类也是对象,当类被回收那么静态变量也会被回收,但是一般不会被回收
运行时数据区
运行时常量池引用
public void setproperties(){int i =0;int j = 10;int k=10;}
j
a1
栈帧3
本地方法栈
a
方法出入口地址
i
静态变量存储在方法区生命周期同类的声明周期class 类的信息
java编译器
oxffffbb
栈帧2
:基本数据类型的成员变量名和值都存储于堆中,其生命周期和对象的是一致的。
堆
c
因此可见:在Java中所有的参数传递,不管基本类型还是引用类型,都是值传递,或者说是副本传递。只是在传递过程中
k
0 条评论
下一页