`
quanhy5
  • 浏览: 57487 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

java 存储 堆,栈,常量池

阅读更多
1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.
2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)
3. 堆:存放所有new出来的对象。
4. 静态域:存放静态成员(static定义的)
5. 常量池:存放字符串常量和基本类型常量(public static final)。
6. 非RAM存储:硬盘等永久存储空间

    这里我们主要关心栈,堆和常量池,对于栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。
对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。
分享到:
评论

相关推荐

    Java堆、栈和常量池

    对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中.对于equals相等的字符串,在常量池中永远只有一份,在堆...

    深入Java核心 Java内存分配原理精讲

    Java内存分配与管理是Java的核心技术之一,今天我们深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域: ... ◆常量池:存放常量  ◆非RAM存储:硬盘等永久存储空间

    Java内存分配分析/栈内存、堆内存

    首先学习JVM相关需要需要内存的组成。  基本内容  · 堆  java动态创建对象,即对于new的一个...  首先明确的是:常量池存在于堆中。  即JVM为每个已加载的类型开辟一块区域,包括基本类型和String类型(其

    JAVA内存分配精讲.docx

    Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java...◆常量池:存放常量 ◆非RAM存储:硬盘等永久存储空间

    APP界面帧率测试结果

    栈(Stack):存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 堆(Heap):堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器(GC)来管理。 静态...

    Java虚拟机栈--栈帧.docx

    栈帧的内部结构 ...3.动态链接 (Dynamic Linking)(或执行"运行时常量池"的方法引用)----深入理解Java多态特性必读!! 4.方法返回地址(Return Adress)(或方法正常退出或者异常退出的定义) 5.一些附加信息

    Java常见面试问题整理.docx

    运行时常量池是方法区的一部分,class文件除了有类的字段、接口、方法等描述信息之外,还有常量池用于存放编译期间生成的各种字面量和符号引用。在老版jdk,方法区也被称为永久代。在1.8之后,由于永久代内存经常...

    [尚硅谷]_宋红康_深度解析Java内存原型

    一、Java 虚拟机内存原型 寄存器:我们在程序中无法控制。 栈: 存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在 堆中。...常量池:存放常量。 非 RAM 存储:硬盘等永久存储空间。

    美团和蚂蚁金服面试笔记.pdf

    堆 虚拟机栈局部变量表 运行时常量池 操作数栈主要保存计算过程的中间结果,同时作为计算过程中的变量临时的存储空间 动态连接 方法返回地址 本地方法区 程序计数器 堆讲解有限分配Eden区-->空间分配担保机制 大对象...

    [java]读书笔记整理:一切都是对象

    用堆进行存储分配比用堆栈进行存储分配需要更多的时间(如果确实可以在java中向在C++中一样在栈中创建对象)。 4) 静态存储 这里的“静态”是指“在固定的位置”(尽管也在RAM里)。静态存储里存放程序运行时一直...

    Java虚拟机

    2.4.3 方法区和运行时常量池溢出 2.4.4 本机直接内存溢出 2.5 本章小结 第3章 垃圾收集器与内存分配策略 3.1 概述 3.2 对象已死吗 3.2.1 引用计数算法 3.2.2 可达性分析算法 3.2.3 再谈引用 3.2.4 生存...

    Java 虚拟机面试题全面解析(干货)

    对于上述最简单的访问,也会涉及到Java栈、Java堆、方法区这三个最重要内存区域。 Object obj 如果出现在方法体中,则上述代码会反映到Java栈的本地变量表中,作为 reference类型数 据出现。 new Object( 反映到Java堆...

    JVM内存模型及垃圾回收

    定义 通俗的来讲,jvm主要...栈: 线程私有存储空间,访问速度仅次于寄存器,栈里面的存储单位为,栈帧, 栈帧对应着方法, 存放着方法的 局部变量表,操作数栈,常量池引用,方法返回地址。 本地方法栈:用于管理本

    虚拟机学习笔记--周志明老师第三版

    2. 方法区(Method Area):存储被 JVM 加载的类信息(字段、成员方法的字节码指令等)、运行时常量池(字面量、符号引用等)、JIT 编译后的 Code Cache 等信息。 3. 直接内存(Direct Memory):JDK1.4 引入 NIO ...

    JAVA 范例大全 光盘 资源

    JAVA 范例大全 光盘 资源 书籍目录: 前言. 第1章 开发环境搭建 1 实例1 下载、安装并配置JDK 1 实例2 第一个Java程序 3 实例3 在Eclipse中创建第一个Java程序 4 常见问题 javac不是内部或者外部命令 6 常见...

    java面试常见基础(深层次,高级研发)

    4. 常量池在jvm的哪个空间里边? 17 5. jvm垃圾回收是什么时候触发的? 17 5.1. 那究竟GC为我们做了什么操作呢? 17 5.1.1. Jvm怎么判断对象可以回收了? 18 5.2. 下面我们来看一下几种垃圾收集算法 18 5.2.1. 在JDK...

    java 面试题 总结

    堆是栈的一个组成元素 19、forward 和redirect的区别 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从...

    Java虚拟机规范(Java SE 7)

    2.5.3 Java堆 ................................................. 29 2.5.4 方法区 ................................................... 29 Java 虚拟机规范 — 目录 第 9 页 / 共 387 页 2.5.5 运行时常量池 ......

    Java虚拟机规范(Java SE 7).pdf

    2.5.3 Java堆 ................................................. 29 2.5.4 方法区 ................................................... 29 Java 虚拟机规范 — 目录 第 9 页 / 共 387 页 2.5.5 运行时常量池 ......

Global site tag (gtag.js) - Google Analytics