2014-03-06 95 views
2

我很想知道如何管理Java堆棧線程。由於每個線程都有一個堆棧分配在操作系統特別要求的一段內存中(請參閱Here)。Java線程堆棧內存分配和管理

  1. 當這個內存被釋放?通過垃圾收集器或本地線程?
  2. java如何向OS傳遞此內存段不再使用的信號?
  3. 這個內存如何影響線程被終止,但他的對應對象仍然有其他活動對象的引用?

回答

3

當這個內存被釋放?通過垃圾收集器或本地線程?

無。它由操作系統發佈...

java如何向操作系統發送此內存段不再使用的信號?

...線程終止時。 JVM在這裏不做任何事情,而是使用原生線程API,後者依次使用OS原語。並且...

該內存如何影響線程被終止,但他的對應對象仍然有其他活動對象的引用?

......這另一方面是JVM的作用;的GC具體。

請注意,創建Thread(或RunnableCallable)實際上並不在OS級創建線程;你必須爲此運行它(使用.start()代替Thread等)。