You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Thread对象启动前仅为普通Java对象吗?栈内存何时分配?

关于Thread实例创建与JVM/OS线程资源分配的疑问
  • 我想确认:在调用start()方法前,Thread实例是否仅为标准Java对象,还是在创建时就已分配JVM/OS级别的特殊资源(如预分配栈内存等)?我初步研究后认为它们是普通对象,希望JVM专家予以确认。

  • 我尤为关注线程栈内存的分配时机:根据JVM规范所述:

    每个Java虚拟机线程都有一个私有的Java虚拟机栈,与线程同时创建
    我不确定此处的“创建”指调用start()方法还是Thread实例构造时(我对OS线程、JVM线程与Thread对象的确切关系不太了解,因此存在困惑,且记得近年来相关机制略有变化,但具体细节已遗忘)。此外我猜测,即便在Thread实例构造时分配了部分OS虚拟内存,栈的实际物理内存页也仅会在线程开始使用后(即调用start()后)才分配。

  • 我提及的“变化”是Java 19中引入的M:N线程映射机制,它改变了OS线程与JVM线程的映射模式。但我仍不确定Thread对象与JVM线程的映射关系:我几乎可以确定已调用start()的Thread对象与JVM线程是1:1映射,但不确定JVM线程是在Thread实例创建时还是调用start()时创建。

内容的提问来源于stack exchange,提问作者morgwai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 16:06:08