gpt4 book ai didi

java - Java中静态变量和静态 block 是如何分配内存的?

转载 作者:太空宇宙 更新时间:2023-11-04 06:54:19 28 4
gpt4 key购买 nike

Java 栈或堆中的静态变量和静态 block 是如何分配内存的?

  class A{
static int a;
static{}
public static void main(String args[]){
A h=new A();
}
}

创建对象时如何为静态堆栈或堆分配内存。

最佳答案

static关键字在java中主要用于内存管理。我们可以将static关键字应用于变量、方法、 block 和嵌套类。 static 关键字属于类而不是类的实例。

静态变量的内存分配仅在类加载到内存中时发生一次。

因此,一旦类被类加载器加载,内存就会被分配给整数a和静态 block 。

Static methods (in fact all methods) as well as static variables are stored in the PermGen section of the heap.

可能比创建它的过程的调用更长久的数据通常分配在堆上。例如。 new 用于创建可以在过程之间传递的对象。堆的大小无法在编译时确定。仅通过指针或引用来引用,例如 C++ 中的动态对象、Java 中的所有对象

过程的本地名称在堆栈上分配空间。堆栈的大小无法在编译时确定。

有关内存管理的更多信息,请参阅以下教程:http://www.oracle.com/technetwork/java/javase/memorymanagement-whitepaper-150215.pdf

关于java - Java中静态变量和静态 block 是如何分配内存的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22945686/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com