首页 > 系统相关 >Java虚拟机内存模型概念

Java虚拟机内存模型概念

时间:2023-12-28 22:22:22浏览次数:25  
标签:Java 常量 虚拟机 线程 内存 方法

Java虚拟机内存模型概念

   Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area

   一、栈stack

   1.  栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
   2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)
   3. 栈属于线程私有,不能实现线程间的共享
   4. 栈的存储特性是"先进后出,后进先出"
   5. 栈是由系统自动分配,速度快。栈是一个连续的内存空间。

  二、堆heap
   1.  堆用于存储创建好的对象和数组(数组也是对象)
   2. JVM只有一个堆,被所有线程共享
   3. 堆是一个不连续的内存空间,分配灵活,速度慢。
   4. 堆被所有的线程所共享,在堆上的区域,会被垃圾回收器做进一步划分,例如新生代,老年代的划分

   三、方法区method area
   1.   方法区是JAVA虚拟机规范,可以有不同的实现
   2.  JVM只有一个方法区,被所有线程共享
   3.  方法区实际也是堆,只是用于存储类、常量相关的信息
   4.  用来存放程序中永远不变或唯一的内容(类信息、静态变量、字符串常量)
   5.  常量池主要存放常量:如文本字符串、final常量值

标签:Java,常量,虚拟机,线程,内存,方法
From: https://www.cnblogs.com/hld123/p/17933718.html

相关文章

  • JAVA学习12-28 数据类型
    数据类型学习publicclassDemo01{publicstaticvoidmain(String[]args){//单行注释/*多行注释*//*不能用关键字来做标识符*//*标识符可以大写字母,小写字母,美元符号,下划线_开头,不能以关键字作为变量名或方法名,-......
  • Java 实现List反转(reverse)的方法
    ​ List的反转是一种常见的操作,反转List会改变列表中元素的顺序,可以根据具体的需求在程序中实现不同的功能和行为。本文主要介绍Java中实现List反转(reverse)的方法,以及相关的示例代码。1、使用for循环实现使用for循环对List进行倒序遍历,添加到一个List中实现反转。代码示......
  • 无涯教程-Java泛型 - 不允许 重载
    一个类不允许具有两个在类型擦除后可以具有相同签名的重载方法。classBox{//Compilererror//Erasureofmethodprint(List<String>)//isthesameasanothermethodintypeBoxpublicvoidprint(List<String>stringList){}publicvoidprint(Li......
  • 无涯教程-Java泛型 - 不允许 数组
    不允许使用参数化类型的数组。//无法创建Box<Integer>的通用数组Box<Integer>[]arrayOfLists=newBox<Integer>[2];由于编译器使用类型擦除,因此将type参数替换为对象,并且用户可以将任何类型的对象添加到数组中。并且在运行时,代码将无法引发ArrayStoreException。//编译......
  • 无涯教程-Java泛型 - 不允许 异常
    泛型类不允许直接或间接扩展Throwable类。//泛型类Box<T>可能不是java.lang.Throwable的子类classBox<T>extendsException{}//泛型类Box<T>可能不是java.lang.Throwable的子类classBox1<T>extendsThrowable{}不允许方法捕获类型参数的。publicstatic<T......
  • JAVA基础+安装
    Java特性高效可跨平台不占内存不需要指针Java三大版本Writeonce,runanywhere.JavaSE:标准版(桌面程序,控制台开发……)JavaME:嵌入式开发(手机,小家电……)JavaEE:E企业级开发(web端,服务器开发)JDK、JRE、JVMJDK:JavaDevelopmentKitJava开发者工具JRE:JavaRuntimeEnvi......
  • javaCC链2
    cc2链pom.xml配置<dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version></dependency>......
  • 无涯教程-Java泛型 - 不允许 强制转换
    除非强制使用无界通配符对其进行参数化,否则不允许强制转换为参数化类型。Box<Integer>integerBox=newBox<Integer>();Box<Number>numberBox=newBox<Number>();//编译器错误:无法从Box<Number>转换为Box<Integer>integerBox=(Box<Integer>)numberBox;要实现相同的目的,......
  • Google Java 编程风格指南
    目录前言术语说明指南说明源文件基础文件名文件编码:UTF-8特殊字符空白字符特殊转义序列非ASCII字符源文件结构许可证或版权信息package语句import语句import不要使用通配符不要换行顺序和间距类声明只有一个顶级类声明类成员顺序重载:永不分离格式大括号使用大括号(即使大括号仅是......
  • 恒创科技:如何合理配置云服务器的CPU和内存?
    ​提到云服务器性能,大抵有两个主要影响因素,CPU核心数量和内存容量,它们决定了云服务器的速度和可靠性。日常运用中,我们如何判断网站需要需要更多或更少?如何扩大或缩小它们以优化网站的性能?一般来说,您拥有的RAM和CPU核心越多,可以同时运行的进程就越多,您的网站对访问......