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

Java内存管理

时间:2023-05-31 23:35:27浏览次数:41  
标签:Java 变量 管理 局部变量 数据类型 存放 内存


Java的内存管理有内存分配与内存回收,Java中内存分配与回收完全用虚拟机自动实现。

 

内存分为:栈,堆,代码区,静态变量存储区。

 

栈:存放局部变量,引用对象,形参(形参是一种特殊的局部变量)。例如,定义局部变量int i=20; 那么i分配在栈中,栈中的内容用完后立即释放,所以速度较快,注意一点,基本数据类型不一定分配在栈中。


堆:存放new出来的对象,堆里面的内容用完后不会立即释放空间。


代码区:主要存放代码。


静态变量存储区:存放字符串,static变量。

 


下面我们来解释语句:House h=new House()

 

根据上面所描述,可以知道h存在于栈中,而House()存在于堆中,对应如图所示:

 

Java内存管理_局部变量

 

h存放的是对象的地址,注意这里不是真正的地址,而是假地址,局部变量在使用前必须明确初始化,成员变量可以不需要,因为成员变量有默认初始值。

 

另外,Java不能像C语言那么直接操作内存,所以Java的安全性很好。

 

Java中函数参数变量有基本数据类型变量和引用类型变量,基本数据类型变量传递的是具体的值,而引用类型的变量传递的是对象的地址。

 


标签:Java,变量,管理,局部变量,数据类型,存放,内存
From: https://blog.51cto.com/u_16146153/6391055

相关文章

  • java List分批处理
    1packagecom.example.demo;2importcom.google.common.collect.Lists;3importjava.util.ArrayList;4importjava.util.List;5publicclassTest{6publicstaticvoidmain(String[]args){7List<Integer>list=newArrayList<......
  • pollard_rho大数分解Java版
    代码:importjava.math.BigInteger;importjava.security.SecureRandom;classPollardRho{privatefinalstaticBigIntegerZERO=newBigInteger("0");privatefinalstaticBigIntegerONE=newBigInteger("1");privatefina......
  • 3、实战案例:部署基于JAVA的博客系统JPress
    官方网站:http://www.jpress.io/安装包下载第一步:[root@ubuntu2004]#mkdir/data/jpress/-p创建网站数据存放的目录,ROOT可以不建把下载好的包拉进/data/jpress/目录,并改名为ROOT.war,它会自动解压成一个ROOT文件夹[root@ubuntu2004jpress]#rz-Erzwaitingtoreceive.[root@......
  • [SprigMVC/SpringBoot] JSON序列化专题之日期序列化问题:接口报Jackson框架错误“Inva
    0序言今日工作中遇到的一个bug。各位看官且听我娓娓道来。1问题描述请求接口时,service层返回到controller层的数据结构为List<Map<Strig,Object>>,而Map中存在一个key=date,valuetype=java.time.LocalDate的Entry,且日志报如下错误:InvalidDefinitionException:Java8date......
  • springsecurity配置内存中账号密码的配置(方便复制)。
    pom.xml的依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> springsecurity的配置文件:WebSecurityConfig.javaimportorg.aspectj.weaver.ast.A......
  • Java中序列化和反序列化解释
    在Java中,序列化(Serialization)是指将对象的状态转换为字节流的过程,以便将其保存到文件、在网络中传输或持久化到数据库中。而反序列化(Deserialization)则是将字节流转换回对象的过程,恢复对象的状态。序列化和反序列化主要用于以下场景:1.对象持久化:通过序列化,可以将对象的状态保存......
  • 2023.5.31 Linux系统⽤户管理
    1.⽤户基本概述1.1⽤户相关的命令1.2⽤户创建的原理2.⽤户密码管理3.组的基本管理4.⽤户身份切换5.⽤户身份提权6.⽇志相关审计1.⽤户基本概述Linu属于多⽤户操作系统,在windows中,可以创建多个⽤户,但不允许同⼀时间多个⽤户进⾏系统登陆,但是Linux可以同时⽀持多个⽤户同时登陆......
  • 学习JavaSE基础-day1
    JRE和JDKJRE:Java运行环境,如果想要运行Java程序至少要安装JREJDK:Java开发环境(开发工具包),如果要开发Java程序,必须安装JDKJRE=JVM+核心类库JDK=JRE+开发工具包JDK>JRE>JVM关系如图所示: JDK下载地址:www.oracle.com配置Path环境变量:希望可以在命令窗口的任意的......
  • Java开发必备软件合集
    IDEA安装详情,包含激活教程,和相关配置教程。IDEA安装配置步骤详解 IntelliJIDEA中有什么让你相见恨晚的技巧IDEA快捷键大全 Navicat安装教程,激活教程navicat介绍(包含安装指导) IDEAvsEclipse:使用体验对比IDEA对比 【待更新】......
  • 【Java】线程池配置
     先看JUC包自带的一个资源线程池执行器:初始化参数如下ThreadPoolExecutorthreadPoolExecutor=newThreadPoolExecutor(corePoolSize,//核心线程数量maximumPoolSize,//峰值线程数量keepAliveTime,//保留时限,当线程数量超出峰值数量时,保......