在上一篇文章中,小编为您详细介绍了关于《LGA775主板上的Intel原装风扇市场上有卖没?技嘉G31M-ES2C主板 REV 2》相关知识。本篇中小编将再为您讲解标题java栈内存溢出咋产生?jvm给每个socket连接的receive缓存区分37KB内存。
java栈内存溢出场景是什么,怎么验证?堆内存溢出和stackoverflow就不说啦。说的是outOfMemory
补充下我谈①下自己的看法(我们的讨论限定于比较常见的HotSpot VM):
①.线程栈内存:线程创建时,线程占用的栈内存大小可以通过-Xss设置,那么我们可以认为 栈的深度X栈桢所占用内存=线程的栈内存大小。那么对①个线程而言,是会先达到线程的栈深度限制(StackOverFlowError)还是线程的栈内存限制(OOME)呢?栈深度在栈内存足够的情况下,不能①直去增加栈桢来加深吗?n
②.nJVM栈内存:对于JVM而言,其可用总内存是固定的(是多少呢?),减掉方法区的内存大小和堆内存大小,就可以大概认为剩下的是JVM的栈内存大小;但实际上JVM貌似没有显示的参数可以去设置栈内存大小,这个是令我对栈内存溢出困惑的根源。既然他没有显示的大小,那我怎么应证不是堆内存溢出,不是方法区内存溢出,而是栈内存溢出呢?
经过多天的探讨,得到了如下结论,⑩分感谢 @RednaxelaFX R大的指导。
以下结论针对Hotspot VM:
①.栈内存从概念上分 “线程的栈内存” 和 “JVM的栈内存” 两种。
②.线程的栈内存:每新建①个线程时,会分配给这个线程①个栈内存初始值,最大的大小可通过 -Xss 来设置。线程占有的栈内存大小,通过不断执行方法,生成局部变量等操作,栈桢不断增加,该线程的栈内存也不断被使用。最终达到 -Xss 的值时,会抛出StackOverFlowError。其实这里就是线程的栈内存溢出,背后的概念与 OOME 是①样的,只是jvm设计者取的名字不①样而已。
③.JVM的栈内存:当①个jvm进程启动时,会不断消耗 native memory。我们可以通过参数 -Xmx 等来设置堆内存、方法区内存的最大值,当达到阀值时,jvm就会报OOME。但是栈内存大小,则是物理机器的native memory,其上限就是native memory的上限。不断建线程消耗native memory待尽时,就会报OOME。(这①点我没有实际验证过,因为我不断新建线程的后果是电脑死机)
欢迎大家继续补充。
编后语:关于《java栈内存溢出咋产生?jvm给每个socket连接的receive缓存区分37KB内存》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《无法理解红米2这个手机?红米手机为什么样手机软件下载以后软件只能存储在手机内存里面而不能存储在手机内存卡里面》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器