当前位置:首页 > 内存 > 正文

内存分为几个区

  • 内存
  • 2024-08-07 17:53:53
  • 5848

一、java中,静态方法被调用是,存储在内存的哪个区域?是栈?还是放大区?还是两者都有?JDK8之前,静态成员(静态变量和静态方法)存储在方法区内部的静态区域(持久代)(这里指的是类加载后静态成员的存储位置)。然而,从JDK8开始,持久代被删除并被元空间取代。但元空间中存储的主要是.class文件的元数据信息,静态成员的存储位置从方法区转移到堆内存(堆)。
但是,即使在JDK8及之前的版本中,静态方法(不仅是静态方法,还包括常规成员方法)的执行都是在栈内存(stack)上进行的。当每个线程调用一个方法时,它会在堆栈内存中打开一个堆栈,并在执行该方法的线程的堆栈上创建一个“堆栈帧”。栈帧存储局部变量表(基本数据类型和对象)。引用)、操作数堆栈、动态连接、返回地址和其他信息。当该方法执行时,堆栈帧被销毁并释放相应的内存。
二、从基本来说,操作系统把内存划为哪几个区?操作系统将内存分为内核区、硬件映射区和应用程序区。