gpt4 book ai didi

java - 方法住在哪里?栈还是堆?

转载 作者:搜寻专家 更新时间:2023-11-01 01:00:42 24 4
gpt4 key购买 nike

我知道局部变量和方法的参数存在于堆栈中,但我无法弄清楚在 Java 中方法实际存在于何处?

如果我像这样声明任何 Thread 对象:

Thread t=new Thread();
t.start();

所以这意味着我已经创建了一个独立于 main 方法的方法调用。这是什么意思?这是否意味着在堆栈内存上调用单独的方法序列?我说得对吗?

最佳答案

每个线程都分配有自己的堆栈。

This article对 Java 进程中的内存分离有很好的介绍。

Inside the Java virtual machine, each thread is awarded a Java stack, which contains data no other thread can access, including the local variables, parameters, and return values of each method the thread has invoked. The data on the stack is limited to primitive types and object references. In the JVM, it is not possible to place the image of an actual object on the stack. All objects reside on the heap.

我见过很多这样的场景,客户在每个线程做的很少的基础上实现了巨大的线程服务器,但他们遇到了内存问题。那是因为每个线程都分配了自己的堆栈,这(显然)加起来了。我认为默认值是每个线程 512k,但我还没有找到它的规范来源。

关于java - 方法住在哪里?栈还是堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1208695/

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