【发布时间】:2010-05-13 11:03:19
【问题描述】:
每当一个类被加载时,堆里存什么,栈里存什么?
还有线程驻留在哪里?
【问题讨论】:
标签: java multithreading memory jvm
每当一个类被加载时,堆里存什么,栈里存什么?
还有线程驻留在哪里?
【问题讨论】:
标签: java multithreading memory jvm
引用类型在堆中。
任何原始类型数据和对堆上值的引用(方法的参数/局部变量)都在堆栈上。
每个线程都有自己的堆栈。
应用程序中的所有线程共享同一个堆。
【讨论】:
真的很简单:
请注意,局部变量只能保存引用(“指针”)或原始值。局部变量永远不能保存“对象”。
请注意,this 视图是 JVM 规范中定义的。如果需要,具体的 JVM 可以在非堆区域中分配对象。例如:如果它知道一个新创建的对象永远不会逃脱当前的调用,那么它可以将实例化的对象放入堆栈区域。然而,这是一个开发者看不到的优化。
【讨论】:
基元:堆栈
对象:堆
线程:有一个单独的堆栈,同时共享同一个堆。
【讨论】: