জাভা জিসি (বরাদ্দ ব্যর্থতা)


129

সর্বদা "জিসি (বরাদ্দ ব্যর্থতা)" কেন?

লিনাক্স- এমডি 64 জেআরই ( 1.8.0_25 -b17) এর জন্য জাভা হটস্পট (টিএম) 64-বিট সার্ভার ভিএম (25.25- বি 02),

CommandLine flags: 
-XX:CMSInitiatingOccupancyFraction=60 
-XX:GCLogFileSize=10485760 
-XX:+HeapDumpOnOutOfMemoryError 
-XX:InitialHeapSize=32212254720 
-XX:MaxHeapSize=32212254720 
-XX:NewRatio=10 
-XX:OldPLABSize=16 
-XX:ParallelGCThreads=4 
-XX:+PrintGC 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps 
-XX:+PrintStringTableStatistics 
-XX:+PrintTenuringDistribution 
-XX:StringTableSize=1000003 
-XX:SurvivorRatio=4 
-XX:TargetSurvivorRatio=50 
-XX:+UseCompressedClassPointers 
-XX:+UseCompressedOops
-XX:+UseParNewGC 
-XX:+UseConcMarkSweepGC
27.329: [GC (Allocation Failure) 27.329: [ParNew
Desired survivor size 44728320 bytes, new threshold 15 (max 15)
- age   1:   16885304 bytes,   16885304 total
: 349568K->16618K(436928K), 0.2069129 secs] 349568K->16618K(31369920K), 0.2070712 secs] [Times: user=0.78 sys=0.04, real=0.21 secs]


28.210: [GC (Allocation Failure) 28.210: [ParNew
Desired survivor size 44728320 bytes, new threshold 15 (max 15)
- age   1:   28866504 bytes,   28866504 total
- age   2:   12582536 bytes,   41449040 total
: 366186K->47987K(436928K), 0.2144807 secs] 366186K->47987K(31369920K), 0.2146024 secs] [Times: user=0.84 sys=0.01, real=0.22 secs]


29.037: [GC (Allocation Failure) 29.038: [ParNew
Desired survivor size 44728320 bytes, new threshold 2 (max 15)
- age   1:   28443488 bytes,   28443488 total
- age   2:   28386624 bytes,   56830112 total
- age   3:   12579928 bytes,   69410040 total
: 397555K->76018K(436928K), 0.2357352 secs] 397555K->76018K(31369920K), 0.2358535 secs] [Times: user=0.93 sys=0.01, real=0.23 secs]

উত্তর:


203

"বরাদ্দ ব্যর্থতা" জিসি চক্রটি কিক করার একটি কারণ।

"বরাদ্দ ব্যর্থতা" এর অর্থ হ'ল বস্তু বরাদ্দ দেওয়ার জন্য ইডেনে আর কোনও স্থান অবশিষ্ট নেই। সুতরাং এটি তরুণ জিসির স্বাভাবিক কারণ।

পুরানো জেভিএম ছোটখাটো জিসি চক্রের জন্য জিসি কারণ মুদ্রণ করছিল না।

"বরাদ্দ ব্যর্থতা" নাবালিক জিসির প্রায় সম্ভাব্য কারণ। নাবালিক জিসিকে লাথি মারার আর একটি কারণ +XX:+ScavengeBeforeRemarkহ'ল সিএমএসের মন্তব্য পর্ব হতে পারে (যদি সক্ষম করা থাকে)।


1
ধন্যবাদ। কেবল সন্ধান করুন যে পুরানো জেভিএম বরাদ্দ ব্যর্থতা মুদ্রণ করে না।
ব্যবহারকারী3644708

2
আমি এই উত্তরটি পুরোপুরি পাই না, তাই এড়াতে হবে নাকি? "এটি তরুণ জিসির স্বাভাবিক কারণ"। তরুণ জিসি কি তখন ভুল পছন্দ?
থমাস

7
হ্যাঁ, এই স্বাভাবিক আচরণ
আলেক্সি রাগোজিন

183
জিসি (বরাদ্দ ব্যর্থতা) একটি ইভেন্টের জন্য শব্দগুলির একটি দুর্বল পছন্দ যা সাধারণত দিনে অনেকবার ঘটতে পারে। এই জেভিএম ইঞ্জিনিয়ারদের আরও বেশিবার বাইরে গিয়ে বাস্তব বিশ্বে সামাজিকতার চেষ্টা করা উচিত যাতে তারা আরও বন্ধুত্বপূর্ণ শব্দগুলি শিখতে পারে যা লোকেরা বুঝতে পারে।
সালভাদোর ভ্যালেন্সিয়া

80
@ সালভাদোরভ্যালেন্সিয়া এটা ঠিক আছে, নিয়মিত ভিত্তিতে জিসি লগ পড়ে এমন লোকেরাও ঠিক "সাধারণ" হয় না। :)
বিজিকলপ

8

"বরাদ্দ ব্যর্থতা" হ'ল জিসির লাথি মারার কারণটি সঠিক নয়। এটি জিসি অপারেশনের একটি ফলাফল।

বরাদ্দ করার জায়গা না থাকলে জিসি লাথি মেরে যায় (অঞ্চল গৌণ বা বড় জিসির উপর নির্ভর করে সঞ্চালিত হয়)। একবার যদি জায়গাটি ভালভাবে ভাল ছেড়ে দেওয়া হয় তবে GC সঞ্চালন করা হয়, তবে পর্যাপ্ত আকার না থাকলে এটি ব্যর্থ হয়। বরাদ্দ ব্যর্থতা যেমন একটি ব্যর্থতা। নীচে নথির ভাল ব্যাখ্যা আছে https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc.html


1
"(...) তারপরে একটি বরাদ্দ ব্যর্থতা দেখা দেয় (কারণ অঞ্চল থেকে সরিয়ে নেওয়া অঞ্চল থেকে সরাসরি বস্তু বরাদ্দ করার কোনও জায়গা নেই) এবং একটি স্টপ-দ্য ওয়ার্ল্ড (এসটিডাব্লু) এর সম্পূর্ণ সংগ্রহ সম্পন্ন করা হয়।" - জাভা ১.৮, সার্ভার মোডে, আমি একটি সংক্ষিপ্ত বিরতি পুনরুত্পাদন করেছি এবং এই দুটি চিহ্নই একসাথে মুদ্রিত হয়েছে: [জিসি (বরাদ্দ ব্যর্থতা) 2287742 কে-> 1148645 কে (2633216 কে), 0.4571912 সেকেন্ড] [সম্পূর্ণ জিসি (আর্গনোমিক্স) 1148645 কে-> 1112141 কে (3184128 কে), 2.8563984 সেকেন্ড] তাই আমি আপনার উত্তরটিকে উর্ধ্বে দিয়েছি ;-)
জোসে ম্যানুয়েল গোমেজ আলভারেজ

-10

যখন jdk1.8 এ সিএমএস জিসি ব্যবহার করা হবে তখন এই ত্রুটিটি উপস্থিত হবে, আমি জি 1 জিসি পরিবর্তন করে এই সমস্যার সমাধান করব।

 -Xss512k -Xms6g -Xmx6g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=70 -XX:NewRatio=1 -XX:SurvivorRatio=6 -XX:G1ReservePercent=10 -XX:G1HeapRegionSize=32m -XX:ConcGCThreads=6 -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 

1
কেন এতবার ভোট পড়ে গেল? একটি ব্যাখ্যা দরকারী হবে।
মাইক স্টোডার্ড্ট

2
কারণ এটি বলার মতো যে আপনি মরচে আপনার প্রোগ্রামটি আবার লিখেছেন এবং এখন আপনার কাছে এই জাতীয় বার্তা নেই?
সহজলিজি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.