<开发实战经典>
     (1)栈内存空间:保存所有的对象名称
     (2)堆内存空间:保存每个对象的具体属性内容
     (3)全局数据区:保存static类型的属性
     (4)全局代码区:保存所有的方法定义

<--->
     (1)栈区:存放局部变量
     (2)堆区:存放对象属性,new出来的数据
     (3)方法区:存储和class相关的信息
     (4)本地方法区:系统相关,无需程序员管理
     (5)寄存器:cpu相关,无需程序员管理

<深入理解java虚拟机>
     (1)程序计数器(program counter register):
         一块较小的内存空间,可看作是当前线程(线程私有)所执行的字节码的行号指示器.字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令.
     (2)java虚拟机栈(vm stack):
         也是线程私有,生命周期与线程相同,虚拟机栈描述的是java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(stack frame)用于存储局部变量表/操作数栈/动态链接/方法出口等信息.每个方法从调用至完成的过程就对应着一个栈帧在虚机栈中从入栈到出栈的过程.
     (3)本地方法栈(native method stack):
         与虚拟机栈发挥的作用类似,区别在于虚拟机栈执行的是java方法服务,而本地方法栈执行的是本地(native)方法服务.
     (4)方法区(method area):
         与堆一样被所有线程共享,用于存储已被虚拟机加载的类信息/常量/静态变量/即时编译器编译后的代码等数据,也叫做非堆(non-heap),也有称为"永久代"的.包括运行时常量池(runtime constant pool)
             --运行时常量池(runtime constant pool):
                 class文件中除了有类的版本/字段/方法/接口等描述信息外,还有就是常量池,用于存放编译器生成的各种字面量和符号引用.
     (5)堆(heap):
         内存中最大的区域,被所有线程共享.作用是存放所有对象实例及数组(暂不考虑逃逸分析技术).堆也是GC管理的主要区域,所以也被称作是"GC堆",由于收集器的分代收集算法,所以java堆还可以细分为:新生代和老年代(再细致一点的还有:eden空间-from survivor空间- to surviver空间).从内存分配的角度看,线程共享的java堆中可能划分出多个线程私有的分配缓冲区(TLAB).

java中的常用内存区域总结的更多相关文章

  1. Java 中数组的内存分配

    Java 中数组的内存分配 1.Java 程序在运行时,需要在内存中分配空间.为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据和内存管理方式. 2.数组基本概念 数组是 ...

  2. java运行时的内存区域

    1.概述 java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线 ...

  3. JVM学习笔记(一):Java虚拟机和虚拟机内存区域

    为什么Java程序需要运行在虚拟机上 因为Java在设计之初的跨平台特性,我们知道Java程序是运行在Java虚拟机上的.如果你要问为什么Java程序要运行在虚拟机上,我可以反问你几个问题. 为什么买 ...

  4. java中JVM虚拟机内存模型详细说明

    java中JVM虚拟机内存模型详细说明 2012-12-12 18:36:03|  分类: JAVA |  标签:java  jvm  堆内存  虚拟机  |举报|字号 订阅     JVM的内部结构 ...

  5. Java宝典(四)------Java中也存在内存泄露。

    --Java中会存在内存泄露吗? --如果你想当然的以为Java里有了垃圾回收机制就不会存在内存泄露,那你就错了. Java里也会存在内存泄露! 我们慢慢来分析. 所谓内存泄露就是指一个不再被程序使用 ...

  6. java中最常用jar包的用途说明

    java中最常用jar包的用途说明,适合初学者 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实 ...

  7. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

  8. Java基础-Java中的堆内存和离堆内存机制

    Java基础-Java中的堆内存和离堆内存机制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  9. Java中会存在内存泄露吗?请简单描述。

    本文转载自:Java中会存在内存泄漏吗,请简单描述 会.java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周 ...

随机推荐

  1. linux svn 客户端基本使用命令

    1.从svn获取项目 svn co URL --username XX --password XX; 2.添加code file svn add codeFile; svn ci -m "c ...

  2. algo: 冒泡排序(Java实现)

    package com.liuxian.algo; public class MySortClass implements Comparable<MySortClass> { public ...

  3. 细说 CSS margin

    作者:https://coding.net/u/zhengkenghong原文:https://blog.coding.net/blog/css-margin 细说 CSS margin 本文着重描述 ...

  4. sqlserver2012——变量declare

    1.声明变量病定义类型 赋值操作 ) set @name='小明' select @name 使用select进行赋值 ) select @name='李明' seelelct @name

  5. RPC原理与实践(二)----Thrift分层模型

    这一节我们从一下几个方面来讲一下Thrift的分层架构,按照官方的定义这是Thrift的网络栈,其中网络栈中分为一下几个部分,(由栈顶到栈底)server,processor,protocol,tra ...

  6. 函数PARSENAME使用和截取字符串

    MS SQL server有一个函数PARSENAME ( 'object_name' , object_piece ). 函数有2个参数: Object_name 检索的对象名称.即是:服务器名.数 ...

  7. 3damx平滑组注意事项

    需要在Editable Poly->面级别,选中(需要平滑的)面,然后去点平滑组或自动平滑 如果出现下图的情况,说明可能是有多余点,点没缝合 max中确认,确实是点没缝合导致

  8. poj 2407 欧拉函数裸题

    http://poj.org/problem?id=2407 题意:多组数据,每次输入一个数 ,求这个数的欧拉函数 int euler_phi(int n){//单个欧拉函数 int m=(int)s ...

  9. Windows服务器初始配置

    系统状态是否良好 检查ip地址.子网掩码等配置 防火墙是否关闭 是否有攻击,有多大的攻击,什么类型的攻击,攻击流量图 是否中病毒 1.改端口 (1)打开注册表 [HKEY_LOCAL_MACHINE\ ...

  10. 解决import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder;报错的问题

    在项目中用到这两个Jar包,但是程序报错. Access restriction: The type BASE64Decoder is not accessible due to restrictio ...