【面试】jvm静态变量和局部变量对比

embedded/2024/9/23 10:17:07/

目录

          • 1. 说明
          • 2. 声明位置与所属
          • 3. 生命周期
          • 4. 访问方式
          • 5. 初始化
          • 6. 存储空间
          • 7. 线程安全性

1. 说明
  • 1.在Java虚拟机(JVM)中,静态变量(类变量)和局部变量是两种不同类型的变量,它们在多个方面存在显著的区别。
  • 2.静态变量和局部变量在声明位置、生命周期、访问方式、初始化、存储空间和线程安全性等方面都存在明显的区别。
  • 3.在编程过程中,应根据具体需求选择合适的变量类型,并考虑其潜在的线程安全问题。
2. 声明位置与所属
  • 1.静态变量(类变量):由static关键字修饰,属于类本身,不依赖于类的任何实例。它们被定义在类的静态块或类的成员变量部分。
  • 2.局部变量:定义在方法体内或方法参数中,属于方法或代码块。局部变量在每次方法调用时创建,并在方法执行完毕后销毁。
3. 生命周期
  • 1.静态变量:随着类的加载而加载到JVM的方法区(静态区),当类被卸载时才会销毁。这意味着静态变量在程序的整个运行期间都存在。
  • 2.局部变量:其生命周期与方法的执行周期相同。一旦方法被调用,局部变量被创建并初始化;当方法执行完毕后,局部变量被销毁。
4. 访问方式
  • 1.静态变量:可以通过类名直接访问(推荐方式),也可以通过类的实例来访问。但出于性能和代码清晰度的考虑,推荐使用类名直接访问静态变量。

  • 2.局部变量:只能在定义它们的方法或代码块内部访问。

5. 初始化
  • 1.静态变量:如果没有显式初始化,则会被自动初始化为对应数据类型的默认值(如int默认为0,boolean默认为false等)。静态变量的初始化发生在类加载阶段。
  • 2.局部变量:必须在使用前显式初始化,否则会导致编译错误。
6. 存储空间
  • 1.静态变量:存储在JVM的方法区(静态区),这是一个所有线程共享的内存区域。
  • 2.局部变量:存储在JVM的栈内存中,具体为栈帧中的局部变量表部分。局部变量表是线程的私有数据,每个线程都有自己独立的栈空间。
7. 线程安全性
  • 1.静态变量:由于被所有实例共享,且存储在共享的内存区域,因此存在线程安全问题。如果多个线程同时访问并修改同一个静态变量,可能会导致数据不一致。
  • 2.局部变量:每个线程的栈帧都是独立的,局部变量存储在栈帧的局部变量表中,因此不存在线程安全问题。

http://www.ppmy.cn/embedded/103006.html

相关文章

神经网络卷积层

一、卷积操作 对应位置相乘相加,最终组成一个新的矩阵,实现了降维。 二、代码 import torch import torchvision from torch import nn from torch.nn import Conv2d from torch.utils.data import DataLoaderdataset torchvision.datasets.CIFAR10(&…

ArcGIS栅格裁剪与合并,制作等高线

1、下载高程数据(DEM) https://mp.weixin.qq.com/s/ewlUUVV0PwdcspPGtSdCog 项目区域对应的卫片,也可以在谷歌地图里看大致经纬度范围 2、项目区域 确定项目区域,例如某个县区范围 3、栅格裁剪与合并 将DEM多个栅格数据合并&#…

嵌入式中详解STM32启动文件

本文对STM32启动文件startup_stm32f10x_hd.s的代码进行讲解,此文件的代码在任何一个STM32F10x工程中都可以找到。 启动文件使用的ARM汇编指令汇总 Stack——栈 Stack_Size EQU 0x00000400 AREA STACK, NOINIT, READWRITE, ALIGN=Stack_Mem SPACE Stack_Size__initial_sp 开辟…

探索音视频SDK在软件集成与私有化部署中的技术难题与解决策略

随着数字化转型的加速,音视频通信已成为众多行业不可或缺的一部分,从在线教育到企业协作,从电商直播到远程医疗,音视频SDK(软件开发工具包)作为实现这些功能的核心技术,其重要性日益凸显。然而&…

8款好用的电脑监控软件推荐?(一口气了解8款!)赶紧Get吧!

电脑监控软件成为了企业和个人管理电脑、提高工作效率、保护信息安全的重要工具。 这些软件不仅能够实时监控电脑的使用情况,还能帮助管理者制定合理的工作计划,预防潜在的安全风险。 本文将为您详细介绍八款功能强大、易于使用的电脑监控软件&#xff…

Project 2021图文安装教程及下载

Microsoft Project是一个国际上享有盛誉的通用的项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本的计划、控制。Microsoft Project 不仅可以快速、准确地创建项目计划,而且可以帮助项目经理…

Linux CentOS 添加路由

一、临时添加 查看当前路由表 ip route show添加路由 假设你要添加一条到特定网络的路由&#xff0c;可以使用以下命令&#xff1a; sudo ip route add <destination_network>/<netmask> via <gateway> dev <interface>例如&#xff0c;要添加一条…

STM32——看门狗(独立/窗口)

程序运行的保障措施&#xff0c;需要在程序中定期喂狗实现&#xff0c;如果某次没有喂&#xff0c;表示程序出现卡死或者其他状态&#xff0c;此时看门狗就会自动复位电路&#xff0c;防止程序长时间卡死。相当于自动复位电路。 独立看门狗&#xff1a;有单独的时钟LSI 窗口看…