< prev index next >

src/hotspot/share/gc/shared/stringdedup/stringDedupThread.hpp

Print this page

        

*** 20,60 **** * or visit www.oracle.com if you need additional information or have any * questions. * */ ! #ifndef SHARE_VM_GC_G1_G1STRINGDEDUPTHREAD_HPP ! #define SHARE_VM_GC_G1_G1STRINGDEDUPTHREAD_HPP - #include "gc/g1/g1StringDedupStat.hpp" #include "gc/shared/concurrentGCThread.hpp" // // The deduplication thread is where the actual deduplication occurs. It waits for // deduplication candidates to appear on the deduplication queue, removes them from // the queue and tries to deduplicate them. It uses the deduplication hashtable to // find identical, already existing, character arrays on the heap. The thread runs // concurrently with the Java application but participates in safepoints to allow // the GC to adjust and unlink oops from the deduplication queue and table. // ! class G1StringDedupThread: public ConcurrentGCThread { ! private: ! static G1StringDedupThread* _thread; ! G1StringDedupThread(); ! ~G1StringDedupThread(); ! void print_start(const G1StringDedupStat& last_stat); ! void print_end(const G1StringDedupStat& last_stat, const G1StringDedupStat& total_stat); ! void run_service(); void stop_service(); public: ! static void create(); ! static G1StringDedupThread* thread(); ! void deduplicate_shared_strings(G1StringDedupStat& stat); }; ! #endif // SHARE_VM_GC_G1_G1STRINGDEDUPTHREAD_HPP --- 20,72 ---- * or visit www.oracle.com if you need additional information or have any * questions. * */ ! #ifndef SHARE_VM_GC_SHARED_STRINGDEDUP_STRINGDEDUPTHREAD_HPP ! #define SHARE_VM_GC_SHARED_STRINGDEDUP_STRINGDEDUPTHREAD_HPP #include "gc/shared/concurrentGCThread.hpp" + #include "gc/shared/stringdedup/stringDedupStat.hpp" // // The deduplication thread is where the actual deduplication occurs. It waits for // deduplication candidates to appear on the deduplication queue, removes them from // the queue and tries to deduplicate them. It uses the deduplication hashtable to // find identical, already existing, character arrays on the heap. The thread runs // concurrently with the Java application but participates in safepoints to allow // the GC to adjust and unlink oops from the deduplication queue and table. // ! class StringDedupThread: public ConcurrentGCThread { ! protected: ! static StringDedupThread* _thread; ! StringDedupThread(); ! ~StringDedupThread(); ! void print_start(const StringDedupStat* last_stat); ! void print_end(const StringDedupStat* last_stat, const StringDedupStat* total_stat); ! void run_service() { this->do_deduplication(); } void stop_service(); + void deduplicate_shared_strings(StringDedupStat* stat); + protected: + virtual void do_deduplication() = 0; + public: ! static StringDedupThread* thread(); ! }; ! template <typename S> ! class StringDedupThreadImpl : public StringDedupThread { ! private: ! StringDedupThreadImpl() { } ! ! protected: ! void do_deduplication(); ! public: ! static void create(); }; ! #endif // SHARE_VM_GC_SHARED_STRINGDEDUP_STRINGDEDUPTHREAD_HPP
< prev index next >