Java内存分析--栈--堆

时间:2021-10-16 05:09:49

Java内存分析--栈--堆

JVM的内存分析:

1.栈内存

1.连续的存储空间,遵循后进先出的原则。

2.每个线程包含一个栈区,栈区只保存基础数据类型的对象和自定义对象的引用。

3.每个栈中的数据都是私有的,其他栈不能访问

4.栈空间较小,用完立刻清理

2.堆内存

1.不连续的空间,用于存放new出的对象,或者说是类的实例。

2.。JVM只有一个堆区被所有线程共享

3.空间较大。垃圾回收器回收垃圾

3.方法区

方法区在堆空间内,用于存放:

1.类内代码信息;

2.静态变量和方法;

3.常量池(显式的String常量和基本类型常量(float、int等),可以存储不经常改变的东西(public static final)。常量池中的数据可以共享)。

class TestVar{
//成员变量
int a;//整数类型
char b;//字符类型
boolean c;//布尔类型
double d;//浮点类型
String e;//引用类型
public void show(){
System.out.println("====成员变量====");
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);
System.out.println("====局部变量====");
int aa=123;
System.out.println(aa);
}
public void test(){
inta=123;//就近原则
System.out.println(a);
}
public static void main(String [] args){
//创建对象
TestVar var=new TestVar();
//var.show();
var.test();
}
}

Java内存分析--栈--堆

参照博客:

https://blog.csdn.net/qq_36743482/article/details/78527312?ops_request_misc=%7B%22request%5Fid%22%3A%22163350651216780262511576%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=163350651216780262511576&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-78527312.first_rank_v2_pc_rank_v29&utm_term=java%E5%86%85%E5%AD%98%E5%88%86%E6%9E%90&spm=1018.2226.3001.4187

https://blog.csdn.net/weixin_41231928/article/details/101055831?ops_request_misc=%7B%22request%5Fid%22%3A%22163350651216780262511576%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=163350651216780262511576&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-4-101055831.first_rank_v2_pc_rank_v29&utm_term=java%E5%86%85%E5%AD%98%E5%88%86%E6%9E%90&spm=1018.2226.3001.4187

参考视频

https://www.bilibili.com/video/BV13b411w78u?from=search&seid=15410949425144710708&spm_id_from=333.337.0.0