码迷,mamicode.com
首页 > 其他好文 > 详细

JVM内存分配简介

时间:2019-03-06 13:23:41      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:先进后出   其它   赋值   本地   new   数组   地方   两种   比较   

面向对象进阶

JVM内存分配

1.xxx.java----xxx.class (编译器进行)

2.xxx.class----类加载器(三种)----在内存分配空间

3.JVM会将内存分为5块
① 栈:
  Java栈区域比较小,空间大约1M。

  特点:(存取数据)速度非常快,在栈里边执行的基本上都是快速的任务:基本数据类型和对象的引用
② 堆:
  new出来的对象都存放在堆里边,堆里边的每一个对象都会产生一个唯一的地址。

内存地址会赋值给栈里边的引用。堆里边的对象需要垃圾回收机制才能销毁。

  要销毁一个对象:对象=null;

  程序员无法控制的,java堆比较占内存的地方。
③ 方法区:
  又称为静态区,被所以线程共享的区域。
 1. 类(class)
 2. 常量
 3. 成员方法
 4. 静态方法
 5. 静态变量
**常量池:
  主要存放开发过程中涉及到的自变量。
  String s = "123"; s存在栈中 123存在常量池中
④ PC寄存器: 
  主要用来保存JVM的指令以及地址

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

ψ 栈和堆的内容: 
  书架-----堆结构
  盒子-----栈
 
栈: 
  栈是一端受限,一端运行操作的线性表。 
  先放的后取,后放的后取,对于栈来说,先进后出(LIFO)
  存储数据有两种结构:
  1. 顺序存储:
    首先要分配一个足够大的数组。控制这个结构,一端进行增删操作,一端不允许操作。

  在这个结构中,让操作的成为栈顶,不让操作的叫栈底
  2. 链式存储
    采用链式结构,控制了入栈和出栈的一个端口,控制一端不能操作
    优点:要多少申请多少,但是用完了一定要释放空间。

堆:
  其实就是经过排序的一种树形数据结构,堆的数据结构指的就是二叉树。

  堆可以看成是一棵树的数组结构 需要从书架上取出一本书,不需要将其它书都拿下来,直接取你想要的数。

JVM内存分配简介

标签:先进后出   其它   赋值   本地   new   数组   地方   两种   比较   

原文地址:https://www.cnblogs.com/Gavin520/p/10482625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!