SlideShare une entreprise Scribd logo
1  sur  11
Télécharger pour lire hors ligne
-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

Contenu connexe

Tendances

Алексей Кутумов, 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
 

Tendances (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
 

Similaire à Notes for xx_use_serialgc

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
 

Similaire à Notes for xx_use_serialgc (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
 

Dernier

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
[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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Dernier (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
[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
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

Notes for xx_use_serialgc

  • 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