java的内存分配

来源:互联网 发布:战地1玩家数据 编辑:程序博客网 时间:2024/06/04 18:22

java将内存控制的权利交给了jvm,自己不用去分配与释放内存,但是内存一旦出现问题,如果你不了解虚拟机是怎么使用内存的,排查错误将会成为一项异常艰难的工作,因此我们要学习java的内存管理机制
java虚拟机运行时的数据区

  1. 程序计数器
    在多线程下每一个线程都有一个程序计数器,我将它看做是一个按照顺序排列的一堆命令的集合
  2. java虚拟机栈
    与程序计数器一样,也是线程私有的,存放基本类型与对象的引用的区域
  3. 本地方法栈
    与虚拟器栈一样,但是这个区域是为native方法服务
  4. java堆
    被所有线程共享的一块内存区域,存放对象的实例
  5. 方法区
    也是线程共享的内存区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即使编译器编译后的代码等数据,也叫非堆(non-Heap)
  6. 运行时常量池
    是方法区的一部分,用于存放编译器生成的各种字面量和符号引用,这部分内容将在类加载后进入方法去的运行时常量池中存放
  7. 直接内存
    这里写图片描述
1 0
原创粉丝点击