面向对象的内存分析。

首先对之前学习的类的概念进行总结:

  1. 类里边会放一些变量和方法;
  2. 类可以看作为一个模板,或图纸,系统根据类的定义来造出对象;
  3. 类即一个对象的抽象;

之后说一下在java编程是内存是怎么分配的:

java虚拟机可以分为三个区域:栈stack,堆heap,方法区method area;

其中方法区其实就是堆中的其中一块,不过比较特殊因此拿出来单独列出来。

其中简单的可以这样理解,栈存储方法,堆存储对象,方法区存储静方法,字符串常量,代码,静态变量等。

对于栈的特点如下:

  1. 栈描述的是方法执行的内存模型,当每个方法被调用时都会创建一个栈帧(存储局部变量,操作数,方法出口等)
  2. jvm为每个线程创建一个栈用于存放该线程执行方法的信息(实际参数,局部变量)
  3. 栈属于线程私有,不能实现线程间的共享
  4. 栈的存储特性“先进后出"
  5. 栈是由系统自动分配的,速度快!栈是一个连续的内存空间

对于堆的特点如下:

  1. 堆用于存储创建好的对象以及数组(其实数组也是对象)
  2. jvm只有一个对被所有的线程共有
  3. 堆是一个不连续的内存空间,分配灵活,速度慢!

对于方法区的特点如下:

  1. jvm只有一个方法去被所有线程共享
  2. 方法区实际也是堆,只是用于存储类,常量相关的信息!
  3. 用来存放程序中永远不变或唯一的内容。

之后是我对这些的理解,当使用某个方式时会在栈中建立一个栈帧给这个方法使用,当new一个对象时,将会在堆中创建一部分给这对象使用,并将随机产生的代表唯一堆块地址传给栈中定义的变量,而且会将最开始的代码,和一些常量存储在堆地方法区中。学艺不精望各位大佬多多批评,我也会靠各位大佬的批评多多借鉴,有很多是在学习中参考的,有什么需要改的可以联系我,我会完善自己努力嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值