首页 > 系统相关 >Java内存管理

Java内存管理

时间:2024-08-08 13:56:07浏览次数:13  
标签:调用 Java 变量 管理 引用 指针 方法 内存

任何平台的JVM管理内存的方式是相同的

JVM如何管理内存:

程序运行前,JVM会向操作系统申请一块内存,然后加载运行JAVA程序,如果不够,就继续申请新内存,直到运行成功或达到内存上限(默认64M)。

内存会划分为几个逻辑区域

占内存最多

存放:对象,引用类型的数据,new创建的对象,只包含对象的属性

内存最小

先进先出

存放:变量,基本型:变量的值  引用型:内存地址

  1. 元空间(方法区)

存放类结构(类的属性和方法),static变量

普通方法和静态方法都存放在这里

普通方法和静态方法区别在于调用的方式不同:

普通方法要通过对象名.方法名调用

静态方法要通过类名.方法名调用

总结:

栈里面存变量,对于基本型变量(8种)栈中存的是具体的值,对于引用型变量栈中存的是内存首地址

堆里存的是引用型的具体数值,包括对象数据和数组,

元空间存的是类结构,包括具体的静态变量和所有方法

Java没有指针,因为Java不能声明指针变量,但引用数据类型(类,接口,数组)封装了指针

声明对象:分配栈内存,类似指针类型变量

创建对象:分配堆内存,存储具体值

只有引用型才有声明与创建

值传递:基本类型采用值传递

引用传递:引用数据类型采用引用传递

值栈:

调用方法会生成值栈内存空间

方法调用开始创建,方法调用自动消亡

存储数据:形参变量 方法内声明的局部变量

垃圾回收线程

回收堆内存

何时运行:

  1. 内存不够用的时候
  2. 系统资源闲置
  3. 使用System.gc建议垃圾回收线程运行

当堆内存没有任何指向它的引用

标签:调用,Java,变量,管理,引用,指针,方法,内存
From: https://blog.csdn.net/weixin_75133275/article/details/141025151

相关文章

  • java之多线程篇
    一、基本概念1.什么是线程?线程就是,操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。简单理解就是:应用软件中互相独立,可以同时运行的功能2.什么是多线程?有了多线程,我们就可以让程序同时做多件事情3.多线程的作用?提高效率4.线程的应用场......
  • java之反射篇(上)——基本使用
    目录一、什么是反射二、获取class对象的3种方法三、反射获取构造方法四、反射获取成员变量五、反射获取成员方法 六、反射的作用 七、反射的两种使用方式1.Demo1保存信息2.Demo2结合配置文件获取类信息一、什么是反射反射允许对成员变量,成员方法和构造方法的信......
  • from type [java.lang.String] to type [org. apache.kafka.clients.consumer.Consume
    kafka消费消息的时候,报错Noconverterfoundcapableofconvertingfromtype[java.lang.String]totype[org.apache.kafka.clients.consumer.ConsumerRecord<??>,没有消费到数据,这种情况可能是发送方发送的数据是封装了多个ConsumerRecord<??>对象发送过来的,需要用Consume......
  • ArcGIS API for JavaScript 3.x 到 4.x 的升级手册
    众所周知,3.x版本主要是构建二维地图,且基本不会再添加新功能;而4.x版本主要是构建于三维地图,与3.x相比并不是简单的升级,基本上就是重写了。所以当我们需要把API从3.x升级到4.x时,应用程序基本上是需要重写的,这里将对API升级过程中涉及到的相关变动进行记录与描述。以下......
  • Java 中 Exception 和 Error 有什么区别?
    1.ExceptionException代表程序正常运行过程中可以预料到的意外情况,应该被开发者捕获并进行相应处理。2.ErrorError指在正常情况下不太可能出现的情况。大部分Error导致程序处于不正常、不可恢复的状态,所以不便也不需被开发者捕获,因为这个情况下你捕获了也无济于事......
  • 什么是 Java 中的不可变类?
    不可变类是指创建后无法修改对象状态的类。String类是Java中典型的不可变类。1.不可变类的特点一旦创建,对象的状态就不能被改变。所有成员变量都是final类型。所有可变成员变量都是私有的,并且没有提供修改它们的公共方法。2.不可变类的示例以String类为例,执行s......
  • kubernetes笔记-4-kubernetes资源管理
    一、、kubernetes资源分类:工作负载、发现与负载均衡、配置与存储、集群、和元数据1、工作负载型资源分为:有状态和无状态两种类型;无状态:每个pod均可被其它其他同类所取代;有状态:有其独特性,必须单独标识和管理;ReplicaSet、Deployment负责无状态应用管理;StatefulSet负责有状态应用管......
  • 推荐一款界面优雅、功能强大的 .NET + Vue 权限管理系统
    目录前言项目简介项目特点项目预览项目演示1、系统登录2、系统首页 3、系统页面 4、插件示例 5、移动端项目地址总结前言今天推荐一款用.NET和Vue3实现的开源权限管理系统。它的界面清爽干净,功能强大,还具备灵活的角色权限分配功能,能够满足不同规模企业......
  • Flink开发:Java vs. Scala - 代码对比分析,选择你的最佳拍档
    一、引言1.1Flink简介ApacheFlink是一个开源的流处理框架,它支持高吞吐量、低延迟以及复杂的事件处理。Flink的核心是一个流式数据流执行引擎,它的针对数据流的分布式计算提供了数据分发、通信、容错机制。Flink提供了多种API,包括DataStreamAPI(用于构建流处理程序)、D......
  • 基于JAVA的宠物店会员管理系统设计与实现,源码、部署+讲解
    摘要随着计算机和网络的不断革新,世界也已进入了前所未有的电子时代。作为实用性强、应用范围广泛的会员管理系统也在被越来越多的行业所使用。当今社会经济发展迅速,宠物在人们生活中的地位也越来越高。市场上迫切需求一款便携操作的宠物会员管理。因此需要设计开发在效率、功......