SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
-XX:+UseSerialGC

    rough memos
minor gc で eden/from から to に copy する辺りのスタックトレース

DefNewGeneration::copy_to_survivor_space(oopDesc*) ()
FastScanClosure::do_oop(oopDesc**) ()
Universe::oops_do(OopClosure*, bool) ()
SharedHeap::process_strong_roots(bool, bool, SharedHeap::
ScanningOption, OopClosure*, CodeBlobClosure*, OopsInGenClosure*) ()
GenCollectedHeap::gen_process_strong_roots(int, bool, bool, bool,
SharedHeap::ScanningOption, OopsInGenClosure*, bool,
OopsInGenClosure*) ()
DefNewGeneration::collect(bool, bool, unsigned int, bool) ()
GenCollectedHeap::do_collection(bool, bool, unsigned int, bool, int) ()
GenCollectorPolicy::satisfy_failed_allocation(unsigned int, bool) ()
GenCollectedHeap::satisfy_failed_allocation(unsigned int, bool) ()
VM_GenCollectForAllocation::doit() ()
VM_Operation::evaluate() ()
VMThread::evaluate_operation(VM_Operation*) ()
VMThread::loop() ()
VMThread::run() ()
java_start(Thread*) ()
Java heap からのメモリ取得に失敗し、VMThread に GC を依頼したスレッド。GC 終了まで
待つ。
#1 0x00ddd48c in pthread_cond_wait@@GLIBC_2.3.2 ()
#2 0x01310524 in os::PlatformEvent::park() ()
#3 0x012e80f8 in Monitor::IWait(Thread*, long long) ()
#4 0x012e88c3 in Monitor::wait(bool, long, bool) ()
#5 0x0144a064 in VMThread::execute(VM_Operation*) ()
#6 0x010396ef in GenCollectorPolicy::mem_allocate_work(unsigned int, bool, bool*) ()
#7 0x0110f83c in GenCollectedHeap::mem_allocate(unsigned int, bool, bool, bool*) ()
#8 0x0114c379 in instanceKlass::allocate_instance(Thread*) ()
#9 0x0137a0c5 in OptoRuntime::new_instance_C(klassOopDesc*, JavaThread*) ()
#10 0xb489d909 in ?? ()
#11 0x00000000 in ?? ()
void DefNewGeneration::collect(bool full,
                     bool clear_all_soft_refs,
                     size_t size,
                     bool is_tlab) {
:
age_table clear
to clear
:
gch->gen_process_strong_roots
evacuate_followers.do_void
if !promotion_failed
  eden clear
  from clear
  :
  swap_spaces
  _tenuring_threshold = ...
else
  :
  swap-spaces
  gch->set_incremental_collection_will_fail
  _next_gen->promotion_failure_occurred
Full GC の最中のスタックトレース

GenMarkSweep::mark_sweep_phase4() ()
GenMarkSweep::invoke_at_safepoint(int, ReferenceProcessor*, bool) ()
OneContigSpaceCardGeneration::collect(bool, bool, unsigned int, bool) ()
TenuredGeneration::collect(bool, bool, unsigned int, bool) ()
GenCollectedHeap::do_collection(bool, bool, unsigned int, bool, int) ()
GenCollectorPolicy::satisfy_failed_allocation(unsigned int, bool) ()
GenCollectedHeap::satisfy_failed_allocation(unsigned int, bool) ()
VM_GenCollectForAllocation::doit() ()
VM_Operation::evaluate() ()
VMThread::evaluate_operation(VM_Operation*) ()
VMThread::loop() ()
VMThread::run() ()
void TenuredGeneration::collect(bool full,
                      bool clear_all_soft_refs,
                      size_t size,
                      bool is_tlab) {
  retire_alloc_buffers_before_full_gc
  OneContigSpaceCardGeneration::collect(full, clear_all_soft_refs,
                           size, is_tlab)
}

void OneContigSpaceCardGeneration::collect(bool full,
                           bool clear_all_soft_refs,
                           size_t size,
                           bool is_tlab) {
 SpecializationStats clear();

    ...
    GenMarkSweep::invoke_at_safepoint(_level, ref_processor(), clear_all_soft_refs);
    ...
}
void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp, bool
clear_all_softrefs)
 :
 mark_sweep_phase1
 mark_sweep_phase2
 mark_sweep_phase3
 mark_sweep_phase4
void GenMarkSweep::mark_sweep_phase1(int level,
                   bool clear_all_softrefs) {
 :
 GenCollectedHeap* gch = GenCollectedHeap::heap();
 :
 gch->gen_process_strong_roots(level,
                 false, // Younger gens are not roots.
                 true, // activate StrongRootsScope
                 true, // Collecting permanent generation.
                 SharedHeap::SO_SystemClasses,
                 &follow_root_closure,
                 true, // walk code active on stacks
                 &follow_root_closure);
java class をあらわすデータ構造 method area (perm) にある。

class instanceKlass      klassOopDesc      0x9c false
field instanceKlass _array_klasses    0    4     klassOop
field instanceKlass _methods        4    4     objArrayOop
:
field instanceKlass _fields       0x14 4      typeArrayOop
field instanceKlass _constants      0x18 4       constantPoolOop
field instanceKlass _class_loader    0x1c 4       oop
field instanceKlass _protection_domain 0x20 4        oop
field instanceKlass _signers       0x24 4       objArrayOop
field instanceKlass _source_file_name 0x28 4         symbolOop

field instanceKlass _inner_classes    0x30 4     typeArrayOop
field instanceKlass _implementor      0x34 4     klassOop
field instanceKlass _generic_signature 0x38 4      symbolOop
field instanceKlass _class_annotations 0x3c 4      typeArrayOop
field instanceKlass _fields_annotations 0x40 4     objArrayOop
field instanceKlass _methods_annotations 0x44 4       objArrayOop
field instanceKlass _methods_parameter_annotations 0x48 4        objArrayOop
field instanceKlass _methods_default_annotations 0x4c 4       objArrayOop
*Klass 系の物の先頭にある部分

class Klass Klass_vtbl 0x54 true
field Klass _super_check_offset       0   4      juint
:
field Klass _primary_supers         0xc 0x20 klassOop[8]
field Klass _size_helper          0x2c 4      int
field Klass _java_mirror          0x30 4      oop
field Klass _modifier_flags        0x34 4      jint
field Klass _super             0x38 4       klassOop
field Klass _name               0x3c 4      symbolOop
field Klass _access_flags          0x40 4       AccessFlags
field Klass _subklass            0x44 4      klassOop
field Klass _next_sibling         0x48 4      klassOop
field Klass _alloc_count          0x4c 4      juint
field Klass _is_objArray          0x50 1      bool
メソッドを表すクラス

class methodOopDesc oopDesc 0x58 false
field methodOopDesc _constMethod        0    4   constMethodOop
field methodOopDesc _constants        4    4   constantPoolOop
field methodOopDesc _method_data         8   4   methodDataOop
field methodOopDesc _interpreter_invocation_count 0xc 4        int
field methodOopDesc _access_flags       0x10 4     AccessFlags
field methodOopDesc _vtable_index      0x14 4     int
:
field methodOopDesc _method_size        0x18 2     u2
field methodOopDesc _max_stack         0x1a 2     u2
field methodOopDesc _max_locals        0x1c 2     u2
field methodOopDesc _size_of_parameters 0x1e 2        u2
:
field methodOopDesc _i2i_entry      0x40 4 address
field methodOopDesc _adapter         0x44 4 AdapterHandlerEntry*
field methodOopDesc _from_compiled_entry 0x48 4 address
field methodOopDesc _code           0x4c 4 nmethod*
field methodOopDesc _from_interpreted_entry 0x50 4 address

Weitere ähnliche Inhalte

Was ist angesagt?

Алексей Кутумов, Coroutines everywhere
Алексей Кутумов, Coroutines everywhereАлексей Кутумов, Coroutines everywhere
Алексей Кутумов, Coroutines everywhereSergey Platonov
 
Writing good std::future<c++>
Writing good std::future<c++>Writing good std::future<c++>
Writing good std::future<c++>Anton Bikineev
 
Building fast interpreters in Rust
Building fast interpreters in RustBuilding fast interpreters in Rust
Building fast interpreters in RustIngvar Stepanyan
 
Обзор фреймворка Twisted
Обзор фреймворка TwistedОбзор фреймворка Twisted
Обзор фреймворка TwistedMaxim Kulsha
 
ITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему кодуITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему кодуdelimitry
 
Binaries Are Not Only Output
Binaries Are Not Only OutputBinaries Are Not Only Output
Binaries Are Not Only OutputHajime Morrita
 
Коварный code type ITGM #9
Коварный code type ITGM #9Коварный code type ITGM #9
Коварный code type ITGM #9Andrey Zakharevich
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerAndrey Karpov
 
DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)cruisercoder
 
Антон Бикинеев, Writing good std::future< C++ >
Антон Бикинеев, Writing good std::future< C++ >Антон Бикинеев, Writing good std::future< C++ >
Антон Бикинеев, Writing good std::future< C++ >Sergey Platonov
 
Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)ujihisa
 
Practical JavaScript Programming - Session 1/8
Practical JavaScript Programming - Session 1/8Practical JavaScript Programming - Session 1/8
Practical JavaScript Programming - Session 1/8Wilson Su
 
Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8Wilson Su
 
What static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannotWhat static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannotAndrey Karpov
 
Javascript basics
Javascript basicsJavascript basics
Javascript basicsFin Chen
 

Was ist angesagt? (19)

Алексей Кутумов, Coroutines everywhere
Алексей Кутумов, Coroutines everywhereАлексей Кутумов, Coroutines everywhere
Алексей Кутумов, Coroutines everywhere
 
Writing good std::future<c++>
Writing good std::future<c++>Writing good std::future<c++>
Writing good std::future<c++>
 
Building fast interpreters in Rust
Building fast interpreters in RustBuilding fast interpreters in Rust
Building fast interpreters in Rust
 
Обзор фреймворка Twisted
Обзор фреймворка TwistedОбзор фреймворка Twisted
Обзор фреймворка Twisted
 
The zen of async: Best practices for best performance
The zen of async: Best practices for best performanceThe zen of async: Best practices for best performance
The zen of async: Best practices for best performance
 
ITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему кодуITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
ITGM #9 - Коварный CodeType, или от segfault'а к работающему коду
 
Rust ⇋ JavaScript
Rust ⇋ JavaScriptRust ⇋ JavaScript
Rust ⇋ JavaScript
 
Binaries Are Not Only Output
Binaries Are Not Only OutputBinaries Are Not Only Output
Binaries Are Not Only Output
 
Stop Monkeys Fall
Stop Monkeys FallStop Monkeys Fall
Stop Monkeys Fall
 
Коварный code type ITGM #9
Коварный code type ITGM #9Коварный code type ITGM #9
Коварный code type ITGM #9
 
The operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzerThe operation principles of PVS-Studio static code analyzer
The operation principles of PVS-Studio static code analyzer
 
DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)DConf 2016 std.database (a proposed interface & implementation)
DConf 2016 std.database (a proposed interface & implementation)
 
Антон Бикинеев, Writing good std::future< C++ >
Антон Бикинеев, Writing good std::future< C++ >Антон Бикинеев, Writing good std::future< C++ >
Антон Бикинеев, Writing good std::future< C++ >
 
Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)Hacking parse.y (RubyConf 2009)
Hacking parse.y (RubyConf 2009)
 
Your code is not a string
Your code is not a stringYour code is not a string
Your code is not a string
 
Practical JavaScript Programming - Session 1/8
Practical JavaScript Programming - Session 1/8Practical JavaScript Programming - Session 1/8
Practical JavaScript Programming - Session 1/8
 
Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8
 
What static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannotWhat static analyzers can do that programmers and testers cannot
What static analyzers can do that programmers and testers cannot
 
Javascript basics
Javascript basicsJavascript basics
Javascript basics
 

Ähnlich wie XX: Use Serial GC for Minor GC Traces

NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016Mikhail Sosonkin
 
เมธอด ชั้น ม 6 ห้อง 2
เมธอด ชั้น ม  6 ห้อง 2เมธอด ชั้น ม  6 ห้อง 2
เมธอด ชั้น ม 6 ห้อง 2Pookie Pook
 
200 Open Source Projects Later: Source Code Static Analysis Experience
200 Open Source Projects Later: Source Code Static Analysis Experience200 Open Source Projects Later: Source Code Static Analysis Experience
200 Open Source Projects Later: Source Code Static Analysis ExperienceAndrey Karpov
 
Advanced Debugging Using Java Bytecodes
Advanced Debugging Using Java BytecodesAdvanced Debugging Using Java Bytecodes
Advanced Debugging Using Java BytecodesGanesh Samarthyam
 
Create your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 VeronaCreate your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 VeronaPatrick Allaert
 
Code lifecycle in the jvm - TopConf Linz
Code lifecycle in the jvm - TopConf LinzCode lifecycle in the jvm - TopConf Linz
Code lifecycle in the jvm - TopConf LinzIvan Krylov
 
Why GC is eating all my CPU?
Why GC is eating all my CPU?Why GC is eating all my CPU?
Why GC is eating all my CPU?Roman Elizarov
 
CppCat Checks OpenMW: Not All is Fine in the Morrowind Universe
CppCat Checks OpenMW: Not All is Fine in the Morrowind UniverseCppCat Checks OpenMW: Not All is Fine in the Morrowind Universe
CppCat Checks OpenMW: Not All is Fine in the Morrowind UniverseAndrey Karpov
 
Tetcon2016 160104
Tetcon2016 160104Tetcon2016 160104
Tetcon2016 160104Bordeaux I
 
CIS 336 Inspiring Innovation/tutorialrank.com
CIS 336 Inspiring Innovation/tutorialrank.comCIS 336 Inspiring Innovation/tutorialrank.com
CIS 336 Inspiring Innovation/tutorialrank.comjonhson111
 
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CanSecWest
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesCharles Nutter
 
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016Codemotion
 
Beirut Java User Group JVM presentation
Beirut Java User Group JVM presentationBeirut Java User Group JVM presentation
Beirut Java User Group JVM presentationMahmoud Anouti
 
Kamil witecki asynchronous, yet readable, code
Kamil witecki asynchronous, yet readable, codeKamil witecki asynchronous, yet readable, code
Kamil witecki asynchronous, yet readable, codeKamil Witecki
 
Code instrumentation
Code instrumentationCode instrumentation
Code instrumentationBryan Reinero
 
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2PVS-Studio
 
JSUG - Tech Tips1 by Christoph Pickl
JSUG - Tech Tips1 by Christoph PicklJSUG - Tech Tips1 by Christoph Pickl
JSUG - Tech Tips1 by Christoph PicklChristoph Pickl
 

Ähnlich wie XX: Use Serial GC for Minor GC Traces (20)

NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016NYU hacknight, april 6, 2016
NYU hacknight, april 6, 2016
 
เมธอด ชั้น ม 6 ห้อง 2
เมธอด ชั้น ม  6 ห้อง 2เมธอด ชั้น ม  6 ห้อง 2
เมธอด ชั้น ม 6 ห้อง 2
 
200 Open Source Projects Later: Source Code Static Analysis Experience
200 Open Source Projects Later: Source Code Static Analysis Experience200 Open Source Projects Later: Source Code Static Analysis Experience
200 Open Source Projects Later: Source Code Static Analysis Experience
 
Advanced Debugging Using Java Bytecodes
Advanced Debugging Using Java BytecodesAdvanced Debugging Using Java Bytecodes
Advanced Debugging Using Java Bytecodes
 
Create your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 VeronaCreate your own PHP extension, step by step - phpDay 2012 Verona
Create your own PHP extension, step by step - phpDay 2012 Verona
 
Code lifecycle in the jvm - TopConf Linz
Code lifecycle in the jvm - TopConf LinzCode lifecycle in the jvm - TopConf Linz
Code lifecycle in the jvm - TopConf Linz
 
Marat-Slides
Marat-SlidesMarat-Slides
Marat-Slides
 
Why GC is eating all my CPU?
Why GC is eating all my CPU?Why GC is eating all my CPU?
Why GC is eating all my CPU?
 
CppCat Checks OpenMW: Not All is Fine in the Morrowind Universe
CppCat Checks OpenMW: Not All is Fine in the Morrowind UniverseCppCat Checks OpenMW: Not All is Fine in the Morrowind Universe
CppCat Checks OpenMW: Not All is Fine in the Morrowind Universe
 
Tetcon2016 160104
Tetcon2016 160104Tetcon2016 160104
Tetcon2016 160104
 
CIS 336 Inspiring Innovation/tutorialrank.com
CIS 336 Inspiring Innovation/tutorialrank.comCIS 336 Inspiring Innovation/tutorialrank.com
CIS 336 Inspiring Innovation/tutorialrank.com
 
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
CSW2017 Henry li how to find the vulnerability to bypass the control flow gua...
 
JavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for DummiesJavaOne 2012 - JVM JIT for Dummies
JavaOne 2012 - JVM JIT for Dummies
 
Java
JavaJava
Java
 
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
How to avoid Go gotchas - Ivan Daniluk - Codemotion Milan 2016
 
Beirut Java User Group JVM presentation
Beirut Java User Group JVM presentationBeirut Java User Group JVM presentation
Beirut Java User Group JVM presentation
 
Kamil witecki asynchronous, yet readable, code
Kamil witecki asynchronous, yet readable, codeKamil witecki asynchronous, yet readable, code
Kamil witecki asynchronous, yet readable, code
 
Code instrumentation
Code instrumentationCode instrumentation
Code instrumentation
 
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
Analysis of Haiku Operating System (BeOS Family) by PVS-Studio. Part 2
 
JSUG - Tech Tips1 by Christoph Pickl
JSUG - Tech Tips1 by Christoph PicklJSUG - Tech Tips1 by Christoph Pickl
JSUG - Tech Tips1 by Christoph Pickl
 

Kürzlich hochgeladen

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 

XX: Use Serial GC for Minor GC Traces

  • 1. -XX:+UseSerialGC rough memos
  • 2. minor gc で eden/from から to に copy する辺りのスタックトレース DefNewGeneration::copy_to_survivor_space(oopDesc*) () FastScanClosure::do_oop(oopDesc**) () Universe::oops_do(OopClosure*, bool) () SharedHeap::process_strong_roots(bool, bool, SharedHeap:: ScanningOption, OopClosure*, CodeBlobClosure*, OopsInGenClosure*) () GenCollectedHeap::gen_process_strong_roots(int, bool, bool, bool, SharedHeap::ScanningOption, OopsInGenClosure*, bool, OopsInGenClosure*) () DefNewGeneration::collect(bool, bool, unsigned int, bool) () GenCollectedHeap::do_collection(bool, bool, unsigned int, bool, int) () GenCollectorPolicy::satisfy_failed_allocation(unsigned int, bool) () GenCollectedHeap::satisfy_failed_allocation(unsigned int, bool) () VM_GenCollectForAllocation::doit() () VM_Operation::evaluate() () VMThread::evaluate_operation(VM_Operation*) () VMThread::loop() () VMThread::run() () java_start(Thread*) ()
  • 3. Java heap からのメモリ取得に失敗し、VMThread に GC を依頼したスレッド。GC 終了まで 待つ。 #1 0x00ddd48c in pthread_cond_wait@@GLIBC_2.3.2 () #2 0x01310524 in os::PlatformEvent::park() () #3 0x012e80f8 in Monitor::IWait(Thread*, long long) () #4 0x012e88c3 in Monitor::wait(bool, long, bool) () #5 0x0144a064 in VMThread::execute(VM_Operation*) () #6 0x010396ef in GenCollectorPolicy::mem_allocate_work(unsigned int, bool, bool*) () #7 0x0110f83c in GenCollectedHeap::mem_allocate(unsigned int, bool, bool, bool*) () #8 0x0114c379 in instanceKlass::allocate_instance(Thread*) () #9 0x0137a0c5 in OptoRuntime::new_instance_C(klassOopDesc*, JavaThread*) () #10 0xb489d909 in ?? () #11 0x00000000 in ?? ()
  • 4. void DefNewGeneration::collect(bool full, bool clear_all_soft_refs, size_t size, bool is_tlab) { : age_table clear to clear : gch->gen_process_strong_roots evacuate_followers.do_void if !promotion_failed eden clear from clear : swap_spaces _tenuring_threshold = ... else : swap-spaces gch->set_incremental_collection_will_fail _next_gen->promotion_failure_occurred
  • 5. Full GC の最中のスタックトレース GenMarkSweep::mark_sweep_phase4() () GenMarkSweep::invoke_at_safepoint(int, ReferenceProcessor*, bool) () OneContigSpaceCardGeneration::collect(bool, bool, unsigned int, bool) () TenuredGeneration::collect(bool, bool, unsigned int, bool) () GenCollectedHeap::do_collection(bool, bool, unsigned int, bool, int) () GenCollectorPolicy::satisfy_failed_allocation(unsigned int, bool) () GenCollectedHeap::satisfy_failed_allocation(unsigned int, bool) () VM_GenCollectForAllocation::doit() () VM_Operation::evaluate() () VMThread::evaluate_operation(VM_Operation*) () VMThread::loop() () VMThread::run() ()
  • 6. void TenuredGeneration::collect(bool full, bool clear_all_soft_refs, size_t size, bool is_tlab) { retire_alloc_buffers_before_full_gc OneContigSpaceCardGeneration::collect(full, clear_all_soft_refs, size, is_tlab) } void OneContigSpaceCardGeneration::collect(bool full, bool clear_all_soft_refs, size_t size, bool is_tlab) { SpecializationStats clear(); ... GenMarkSweep::invoke_at_safepoint(_level, ref_processor(), clear_all_soft_refs); ... }
  • 7. void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp, bool clear_all_softrefs) : mark_sweep_phase1 mark_sweep_phase2 mark_sweep_phase3 mark_sweep_phase4
  • 8. void GenMarkSweep::mark_sweep_phase1(int level, bool clear_all_softrefs) { : GenCollectedHeap* gch = GenCollectedHeap::heap(); : gch->gen_process_strong_roots(level, false, // Younger gens are not roots. true, // activate StrongRootsScope true, // Collecting permanent generation. SharedHeap::SO_SystemClasses, &follow_root_closure, true, // walk code active on stacks &follow_root_closure);
  • 9. java class をあらわすデータ構造 method area (perm) にある。 class instanceKlass klassOopDesc 0x9c false field instanceKlass _array_klasses 0 4 klassOop field instanceKlass _methods 4 4 objArrayOop : field instanceKlass _fields 0x14 4 typeArrayOop field instanceKlass _constants 0x18 4 constantPoolOop field instanceKlass _class_loader 0x1c 4 oop field instanceKlass _protection_domain 0x20 4 oop field instanceKlass _signers 0x24 4 objArrayOop field instanceKlass _source_file_name 0x28 4 symbolOop field instanceKlass _inner_classes 0x30 4 typeArrayOop field instanceKlass _implementor 0x34 4 klassOop field instanceKlass _generic_signature 0x38 4 symbolOop field instanceKlass _class_annotations 0x3c 4 typeArrayOop field instanceKlass _fields_annotations 0x40 4 objArrayOop field instanceKlass _methods_annotations 0x44 4 objArrayOop field instanceKlass _methods_parameter_annotations 0x48 4 objArrayOop field instanceKlass _methods_default_annotations 0x4c 4 objArrayOop
  • 10. *Klass 系の物の先頭にある部分 class Klass Klass_vtbl 0x54 true field Klass _super_check_offset 0 4 juint : field Klass _primary_supers 0xc 0x20 klassOop[8] field Klass _size_helper 0x2c 4 int field Klass _java_mirror 0x30 4 oop field Klass _modifier_flags 0x34 4 jint field Klass _super 0x38 4 klassOop field Klass _name 0x3c 4 symbolOop field Klass _access_flags 0x40 4 AccessFlags field Klass _subklass 0x44 4 klassOop field Klass _next_sibling 0x48 4 klassOop field Klass _alloc_count 0x4c 4 juint field Klass _is_objArray 0x50 1 bool
  • 11. メソッドを表すクラス class methodOopDesc oopDesc 0x58 false field methodOopDesc _constMethod 0 4 constMethodOop field methodOopDesc _constants 4 4 constantPoolOop field methodOopDesc _method_data 8 4 methodDataOop field methodOopDesc _interpreter_invocation_count 0xc 4 int field methodOopDesc _access_flags 0x10 4 AccessFlags field methodOopDesc _vtable_index 0x14 4 int : field methodOopDesc _method_size 0x18 2 u2 field methodOopDesc _max_stack 0x1a 2 u2 field methodOopDesc _max_locals 0x1c 2 u2 field methodOopDesc _size_of_parameters 0x1e 2 u2 : field methodOopDesc _i2i_entry 0x40 4 address field methodOopDesc _adapter 0x44 4 AdapterHandlerEntry* field methodOopDesc _from_compiled_entry 0x48 4 address field methodOopDesc _code 0x4c 4 nmethod* field methodOopDesc _from_interpreted_entry 0x50 4 address