2013-03-06 26 views
14

Tôi thấy có sáu loại luồng được triển khai trong JVM HotSpot: VMThread, CGCThread, PGCThread, JavaThread, CompilerThread và WatcherThread. Tuy nhiên tôi không biết loại chủ đề nào đang làm chính xác. Dưới đây là những gì tôi đã hiểu cho đến thời điểm này:Các loại luồng JVM khác nhau (HotSpot) làm gì?

  • VMThread: chạy các tác vụ VM như bộ thu gom rác.
  • CGCThread: Bộ thu gom rác đồng thời.
  • PGCThread: Bộ thu gom rác song song (sự khác biệt với CGC?).
  • JavaThread: Chủ đề của chương trình, tôi đoán vậy.
  • CompilerThread: Một luồng cho trình biên dịch?
  • WatcherThread:?

Câu hỏi bổ sung: về các JVM khác thì sao?

+2

Parallel vs đồng thời: http://stackoverflow.com/questions/1897993/difference-between-concurrent-programming-and-parallel-programming – m0skit0

+1

PCG vs CGC trong Hotspot: http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#available_collectors – assylias

+2

CompilerThread dành cho trình biên dịch JIT. – Chochos

Trả lời

3

Bạn có thể tìm thấy một lời giải thích ngắn gọn về các OpenJDK website:

Các loại chính của đề VM như sau:

  • VM chủ đề: Đây dụ singleton của VMThread có trách nhiệm thực hiện các hoạt động VM , được thảo luận bên dưới
  • Chuỗi tác vụ định kỳ: Ví dụ đơn lẻ này của WatcherThread mô phỏng ngắt hẹn giờ để thực hiện các hoạt động định kỳ trong phạm vi máy ảo
  • GC đề: Những chủ đề, các loại khác nhau, hỗ trợ song song và thu gom rác thải đồng thời
  • Compiler đề: Những bài thực hiện biên soạn thời gian chạy của bytecode để mã gốc
  • Signal phối chủ đề: chờ đợi chủ đề này cho quá trình định hướng tín hiệu và công văn chúng đến một phương thức xử lý tín hiệu mức Java

Bạn có thể muốn đọc toàn bộ đoạn quản lý chủ đề vì nó tiếp tục giải thích thêm, ví dụ những gì các chủ đề VM chịu trách nhiệm.

2

Ok, nhờ vào ý kiến, chúng tôi có sự khởi đầu của một câu trả lời:

1) Kể từ khi thu gom rác đã một mecanism stop-the-thế giới, có tồn tại bên cạnh tunings hai cách để giảm thiểu những tạm dừng:

  • Với các GC song song chạy qua PGCThreads sao cho, nếu n lõi có sẵn, thì n luồng có thể chạy trong khi tạm dừng để rút ngắn chúng.
  • Với GC đồng thời, chạy qua CGCThread và hoàn thành công việc của GC thường xuyên tạm dừng, đồng thời với chuỗi chương trình chính.

2) CompilerThread chạy trình biên dịch Just-In-Time.

3) WatcherThread mô phỏng bộ đếm thời gian ngắt mỗi 50ms để chạy các hoạt động định kỳ trong máy ảo.

1

Và tôi sẽ thêm rằng có chủ đề nhập trong JVM! Đừng bỏ lỡ os_thread

đường dẫn: Defined trong: /hotspot/src/share/vm/runtime/os.hpp

enum ThreadType { 
    vm_thread, 
    cgc_thread,  // Concurrent GC thread 
    pgc_thread,  // Parallel GC thread 
    java_thread,  // Java, CodeCacheSweeper, JVMTIAgent and Service threads. 
    compiler_thread, 
    watcher_thread, 
    os_thread 
    }; 
Các vấn đề liên quan