如果我从我的程序(非守护进程)创建守护线程,堆和永久生成内存空间是与新线程共享还是重新分配?
如果守护线程有自己的空间,在创建新线程时是否尊重 JVM 内存调整参数(如最大堆大小等)?
如果我从我的程序(非守护进程)创建守护线程,堆和永久生成内存空间是与新线程共享还是重新分配?
如果守护线程有自己的空间,在创建新线程时是否尊重 JVM 内存调整参数(如最大堆大小等)?
heap 和 perm gen 内存空间是与新线程共享还是重新分配?
所有线程(守护进程状态无关紧要)共享堆和永久内存空间。每个线程都有自己的堆栈空间,用于存储方法字段和调用堆栈。您可以通过更改 JVM 参数来调整分配的每个线程堆栈空间的大小。但即使是这些堆栈区域也是一般 JVM 堆空间的一部分。
线程在单独的 CPU 中运行时也有内存缓存。每个 CPU 内存缓存用于性能原因,因此可以出于速度原因对本地 CPU 内存进行更新,而无需在每次访问时将信息同步到中央存储。但是这些缓存仍然从一般 JVM 内存空间读取和写入。
有关 daemon-thread 真正含义的更多信息,请参阅@Peter 的回答。
守护线程和普通线程之间的唯一显着区别是它是否会阻止进程停止。普通线程保持 JVM 运行,而守护进程则不会。
守护线程有
顺便说一句:其他差异是迂腐的,
true