如果我从我的程序(一个非守护进程)创建一个守护线程,堆和perm gen内存空间是与新线程共享还是重新分配?
如果守护程序线程拥有自己的空间,那么在创建新线程时是否会考虑JVM内存调优参数,如最大堆大小等?
发布于 2012-09-12 21:47:04
堆和perm gen内存空间是与新线程共享还是重新分配?
所有线程(守护进程状态并不重要)共享堆和perm内存空间。每个线程都有自己的堆栈空间,用来存储方法字段和调用堆栈。您可以通过changing JVM arguments调优分配的每线程堆栈空间的大小。但即使是这些堆栈区域也是一般JVM堆空间的一部分。
当线程在单独的CPU中运行时,它也有一个内存缓存。由于性能原因,使用了每CPU内存缓存,因此可以出于速度原因对本地CPU内存进行更新,而不必在每次访问时将信息同步到中央存储。但是这些缓存仍然对一般的JVM内存空间进行读写。
有关守护进程线程真正含义的更多信息,请参阅@Peter's answer。
发布于 2012-09-12 22:04:58
守护程序线程和普通线程之间唯一重要的区别是它是否会阻止进程停止。普通线程使JVM保持运行,而守护进程则不能。
守护进程线程具有
顺便说一句:其他的不同之处在于:
https://stackoverflow.com/questions/12389661
复制相似问题