沉梦听雨的编程指南 沉梦听雨的编程指南
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)

沉梦听雨

时间是最好的浸渍剂,而沉淀是最好的提纯器🚀
首页
  • 基础篇
  • 集合篇
  • 并发篇
  • JVM
  • 新特性
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 基础篇
  • MySql
  • Redis
  • 达梦数据库
  • Spring
  • SpringBoot
  • Mybatis
  • Shiro
  • 设计须知
  • UML画图
  • 权限校验
  • 设计模式
  • API网关
  • RPC
  • 消息队列
  • SpringCloud
  • 分布式事务
  • 云存储
  • 搜索引擎
  • 多媒体框架
  • 虚拟机
  • 开发工具篇
  • 工具库篇
  • 开发技巧篇
  • 工具类系列
  • 随笔
  • 前端环境搭建
  • HTML与CSS
  • JS学习
  • Axios入门
  • Vue Router入门
  • Pinia入门
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • 脚手架搭建
  • 瑞吉外卖
  • 黑马点评
  • vue-blog
  • 沉梦接口开放平台
  • 用户中心
  • 聚合搜索平台
  • 仿12306项目
  • 壁纸小程序项目
  • RuoYi-Vue
  • 博客搭建
  • 网站收藏箱
  • 断墨寻径摘录
  • 费曼学习法
Github (opens new window)
  • 基础篇

  • 集合篇

  • 并发篇

    • Java并发基础小结
    • 锁详解
    • Synchronized和Volatile的使用与区别
    • 线程池详解
    • CompletableFuture学习
    • LocalThread学习
    • Java内存管理总结
      • 栈内存(Stack Memory)
      • 堆内存(Heap Memory):
      • 方法区(Method Area)
      • 其他相关知识点
  • JVM

  • 新特性

  • Java核心技术卷I

  • Java
  • 并发篇
沉梦听雨
2023-08-27
目录

Java内存管理总结

# Java 内存管理

# 栈内存(Stack Memory)

  • 栈是线程私有的,每个线程都有自己的栈。
  • 用于存储局部变量、方法参数、返回地址以及一些基本数据类型。
  • 具有快速的分配和释放,因为采用"后进先出"(LIFO)的数据结构。
  • 栈内存的大小是有限的,一般由虚拟机预先定义。

# 堆内存(Heap Memory):

  • 用于存储对象实例和数组等动态分配的对象。
  • Java 中的垃圾回收(Garbage Collection)发生在堆内存,回收不再使用的对象。
  • 可以通过设置参数调整堆的大小,如 -Xmx(最大堆大小)和 -Xms(初始堆大小)。
  • 堆内存分为新生代(Eden、Survivor)和老年代,不同的对象生成和生命周期影响对象在不同代中的分配。

# 方法区(Method Area)

  • 存储类信息、常量、静态变量、方法代码等。
  • 方法区也叫永久代(Permanent Generation),但在 Java 8 后被元空间(Metaspace)取代。
  • 元空间的大小可以根据需要动态扩展,并且可以释放未使用的内存。

# 其他相关知识点

  • 值传递与引用传递:基本类型采用值传递,传递的是值的拷贝;引用类型采用引用传递,传递的是引用的地址。
  • 自动内存管理:Java 通过垃圾回收器自动管理内存,释放不再使用的对象,避免了手动释放内存的问题。
  • 内存泄漏:未释放不再使用的对象,导致内存占用不断增加,最终可能耗尽可用内存。
  • 内存溢出(Out of Memory):申请的内存超过了虚拟机的限制,导致程序崩溃。
  • 弱引用、软引用和强引用:不同级别的引用可以影响垃圾回收时对象的生命周期。
  • 栈帧(Stack Frame):方法在执行时会在栈上创建栈帧,用于存储局部变量、操作数栈、方法返回值等。
上次更新: 2024/9/25 11:16:13
LocalThread学习
JVM基础入门

← LocalThread学习 JVM基础入门→

Theme by Vdoing | Copyright © 2023-2025 沉梦听雨 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式