06面向对象进阶

面向对象进阶

JVM内存的分配
编译器将.java文件转化为.class文件
.class文件被交给类加载器(三种)----在内存中分配空间

JVM(java虚拟机)会将内存分为5块:
栈:java栈的区域比较小,空间1M,特点:(存取数据)速度非常快,在栈里执行的基本上都是快速任务,存基本数据类型和对象的引用

堆:new出来的对象都存放在堆里面,堆里面的每一个对象都会产生一个唯一的地址,内存地址赋值给栈里面的引用。堆里面的对象需要垃圾回收机制销毁,手动销毁:将目标对象 = null

方法区:称为静态区
	-类(class)
	-常量
	-成员方法	 //不需要static声明
	-静态方法 //static声明  使方法属于类
	-静态变量
	被所有线程共享的区域
	常量池:存放开发过程中涉及的字面量及常量(String “123”,final 123)
	String s = "123"//s存在栈,“123”存在常量池,String是一个对象
	int s = 123 //s和123都存在栈中

PC寄存器:用来保存JVM的指令和地址

本地方法栈:主要用来保存native方法进入区域的地址

栈和堆的内容:
栈:栈是一端受限,一端允许操作的线性表。第一个数据从栈顶进入,存放在栈底,称为压栈。取出数据必须从栈顶从上到下取出。
理解:先放进来的数据最后才能取出,后放优先取,栈先进后出的特点LIFO(last in fast out)
-存储数据的两种结构:

  • 顺序存储:首先分配一个足够大的数组。控制这个结构,一端进行增删操作,一端不允许操作。让操作的叫栈顶,不让操作的叫栈底。

  • 链式存储:采用链表结构,控制入栈和出栈的一个端口。控制一端不能操作。优点:要多少申请多少,但是用完要释放空间

    堆:一种经过排序的一种树形的数据结构,对的数据结构指的就是二叉树,堆可以看成一棵树的数组结构。每个节点数据都可以单独取出
    内存图
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Yang_Jin_/article/details/88955023
今日推荐