java存储机制(堆、栈、方法区)

简介: java存储机制(堆、栈、方法区)

堆、栈、方法区存储的内容

堆:

堆中存放的都是new出来的对象,每个对象都包含一个与之对应的.class文件,凡是new出来的对象都存放在堆中,堆中不存放基本类型和对象引用,只存放对象本身。


非静态成员变量在类的实例化时开辟空间并初始化,所以类的非静态成员变量也放在堆中。


对于堆中的对象生命周期的管理由Java虚拟机的垃圾回收机制GC进行回收和统一管理。


栈:

每个线程包含一个栈区,栈中只保存基础数据类型的值和对象的引用。在方法执行时,被分配的内存就存在栈中,所以当然存储的局部变量就在栈中。当一段代码或者一个方法调用完毕后,栈中为这段代码所提供的基本数据类型或者对象的引用立即被释放;


每个栈中的数据(基础数据类型和对象引用)都是私有的,其他栈不能访问。


栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。


方法区:

方法区又叫静态区,方法区中包含的都是在整个程序中永远唯一的元素比如class,static变量


方法区和堆一样都是被各个线程所共享,它用于存储class二进制文件,包含了虚拟机加载的类信息、常量、静态变量、即时编译后的代码等数据。


常量池是方法区的一部分内存,常量池在编译期间就将一部分数据存放于该区域,包含基本数据类型如int、long等以final声明的常量值,

串池也是方法区中的一部分内存,用于存放String字符串,对于方法运行期位于栈中的局部变量String常量的值可以通过 String.intern()方法将该值置入到常量池中。


方法区是线程安全的,由于所有的线程都共享方法区,所以,方法区里的数据访问必须被设计成线程安全的。方法区的静态变量一个线程访问的时候另一个线程必须等待。


下面一个图展示上面内容:

目录
相关文章
|
8天前
|
Java 数据库连接 开发者
Java的Shutdown Hook机制:优雅地关闭应用程序
Java的Shutdown Hook机制:优雅地关闭应用程序
17 1
|
10天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
13天前
|
Java
【专栏】Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性
【4月更文挑战第27天】本文探讨了Java反射机制,该机制允许程序在运行时获取类信息、动态创建对象、调用方法和访问属性。反射通过Class、Constructor、Method和Field类实现。文中列举了反射的应用场景,如动态创建对象、调用方法、访问属性和处理注解,并提供了相关实例代码演示。
|
1天前
|
Java 数据安全/隐私保护
java中异常处理机制
java中异常处理机制
8 1
|
1天前
|
算法 安全 Java
深入探索Java中的并发编程:CAS机制的原理与应用
总之,CAS机制是一种用于并发编程的原子操作,它通过比较内存中的值和预期值来实现多线程下的数据同步和互斥,从而提供了高效的并发控制。它在Java中被广泛应用于实现线程安全的数据结构和算法。
13 0
|
2天前
|
Java API 开发者
解密Java反射机制与动态代理
解密Java反射机制与动态代理
8 0
|
3天前
|
存储 监控 安全
JVM工作原理与实战(十六):运行时数据区-Java虚拟机栈
JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了运行时数据区、Java虚拟机栈等内容。
|
4天前
|
Java 数据库连接 开发者
Java中的异常处理机制详解
Java异常处理是确保程序健壮的关键,涉及Throwable的Error和Exception子类。Error由JVM抛出,不建议捕获;Exception分为检查异常(需要捕获)和未检查异常。处理异常的关键字有try、catch、finally、throw和throws。最佳实践包括捕获具体异常、不吞没异常、释放资源和避免滥用异常。示例展示了如何在main方法中处理IOException,并在finally块中进行资源清理。
|
8天前
|
缓存 NoSQL Java
17:缓存机制-Java Spring
17:缓存机制-Java Spring
22 5
|
8天前
|
存储 前端开发 搜索推荐
13:Session机制实现用户登录与注销功能-Java Web
13:Session机制实现用户登录与注销功能-Java Web
24 3