উত্পাদনে জাভা জি 1 আবর্জনা সংগ্রহ


91

যেহেতু জাভা default নতুন জি 1 টি আবর্জনা সংগ্রহ ডিফল্টরূপে ব্যবহার করতে যাচ্ছে জাভা কি "বিধ্বংসী" জিসি বিরতি সময়গুলি ব্যতীত তীব্রতর বৃহত্তর স্তরের ক্রম পরিচালনা করতে সক্ষম হবে? আসলে কি কেউ উত্পাদনে জি 1 বাস্তবায়ন করেছে, আপনার অভিজ্ঞতাগুলি কী ছিল?

আমি কেবলমাত্র একবার দেখতে পেলাম খুব দীর্ঘ জিসি বিরতি খুব বড় স্তূপে রয়েছে, ওয়ার্কস্টেশনের চেয়ে অনেক বেশি। আমার প্রশ্নটি স্পষ্ট করতে; জি 1 শত শত জিবিতে গাদা করার গেটওয়েটি খুলবে? টিবি?


16
যদিও এটি আরও সুনির্দিষ্টভাবে পুনর্বিবেচনা করা যেতে পারে, এটি কোনও ভয়ঙ্কর প্রশ্ন নয়। আমি সত্যিই আশা করি লোকেরা ভোট দেওয়ার সময় "প্রশ্ন নয়" এর চেয়ে নিজেকে আরও ভালভাবে ব্যাখ্যা করে।
বিল কে

আমি বন্ধ করার পক্ষে ভোট দিইনি, তবে আমি আশা করি যে ওপি বর্তমান জিসির সাথে তার খপ্পর বিশদ বর্ণনা করার জন্য আরও উদ্দেশ্যমূলক কাজ করেছে। এছাড়াও, "জাভা" এমন একটি ভাষা যেখানে তিনি একটি প্রয়োগকরণের কথা বলছেন, এবং আমি জানি না "উত্পাদনে জি 1 বাস্তবায়ন করা" এর অর্থ কী, বিশেষত ভবিষ্যতের প্রশ্নের বাকী অংশ নিয়ে। এটি জাভা 7 হতে চলেছে, অবশ্যই কেউ প্রযোজনায় ব্যবহার করেন নি?
পাস্কেল কুয়াক

6
জেডিকে 6 আপডেটের ১৪ তারিখের পরে @ প্যাসাল জি 1 জেডিকে একটি পরীক্ষামূলক বৈশিষ্ট্য হিসাবে উপস্থিত রয়েছে। "উত্পাদনে জি 1 বাস্তবায়ন করে" আমি মনে করি যে তিনি আসলে এটি ব্যবহার করেছিলেন, তা বোঝা খুব কঠিন নয়। এবং আমি সম্মত হয়েছি যে জি 1 জাভা নয়, জেডিকে of এর একটি অংশ, গুগলে জাভা for এর অনুসন্ধান একটি প্রথম ফলাফল হিসাবে জেডিকে home হোমপৃষ্ঠাটি ফেরত দেয় এবং উভয় পদটি প্রায়শই আন্তঃবিস্মরণীয়ভাবে ব্যবহৃত হয়। @ বেঞ্জু আমি জিডি-র সাথে প্রাপ্ত জেডিকে প্রাপ্ত ফলাফলগুলিতে বিশ্বাস করব না কারণ এটি পরীক্ষামূলক, অনেক কিছুই এখন থেকে সরকারী প্রকাশে পরিবর্তিত হতে পারে।
টিটো

4
দেখে মনে হচ্ছে জেডিকে 7 আপডেট সহ 1,2 এবং 3 ডিফল্টভাবে জি 1 জিসি ব্যবহার করে না। আপনি এটি জিনফো-ফ্ল্যাগ ইউজজি 1 জিসি পিড দ্বারা চেক করতে পারেন
জর্জ

উত্তর:


34

এটি জি 1 এর বিন্দুটির মতো ছোট বিরতির সময়গুলি এমনকি এমন একটি বিন্দুতে সর্বাধিক বিরতি সময় লক্ষ্য নির্দিষ্ট করার ক্ষমতা রাখে বলে মনে হয়।

আবর্জনা সংগ্রহ কেবল সহজ নয় "আরে, এটি পূর্ণ, আসুন একবারে সবকিছু সরিয়ে নেওয়া শুরু করুন" আর কোনও চুক্তি করুন - এটি দুর্দান্তভাবে জটিল, বহু-স্তরের, পটভূমি থ্রেডেড সিস্টেম। এটি কোনও বিরতি ছাড়াই ব্যাকগ্রাউন্ডে এর রক্ষণাবেক্ষণের অনেক কিছুই করতে পারে এবং এটি রানটাইমের সময় সিস্টেমের প্রত্যাশিত নিদর্শনগুলির জ্ঞানকে সাহায্য করার জন্যও ব্যবহার করে - যেমন ধরে নেওয়া যায় যে বেশিরভাগ বস্তু তৈরি হওয়ার পরে ঠিক মারা যায় ইত্যাদি etc.

আমি বলব জিসি বিরতির সময়গুলি ভবিষ্যতের প্রকাশের সাথে আরও খারাপের দিকে না, উন্নতি অব্যাহত রাখতে চলেছে।

সম্পাদনা:

পুনরায় পড়ার সময় আমার কাছে এমনটি ঘটেছিল যে আমি প্রতিদিন জাভা ব্যবহার করি - গ্রহন, আজুরিয়াস এবং আমি যে অ্যাপ্লিকেশনগুলি বিকাশ করি এবং এটি একটি দীর্ঘ বিরতি দেখে আমার দীর্ঘ সময় হয়েছে। কোনও উল্লেখযোগ্য বিরতি নয়, তবে আমার অর্থ কোনও বিরাম।

আমি যখন উইন্ডোজ এক্সপ্লোরার বা (মাঝে মাঝে) কিছু নির্দিষ্ট ইউএসবি হার্ডওয়ার হুক করেছি তখন জাভা দিয়ে --- কিছুতেই বিরতি দেখেছি।

জিসি এখনও কারও সাথে ইস্যু?


সম্মত হন - আমি যখন একবার জিসি বিরতি দিয়েছি তখনই আমি যখন ইচ্ছাকৃতভাবে বা দুর্ঘটনাক্রমে তাদেরকে ব্যাপক
পরিমাণে

28
হ্যাঁ, আপনি যখন বৃহত্তর স্তূপগুলি (> 16 জিবি), বিশেষত বৃহত্তর দশম প্রজন্মের সাথে কাজ শুরু করেন তখন জিসি এখনও একটি সমস্যা issue
দ্য অকেমিস্ট

4
@ দ্য-অ্যালকেমিস্ট বাহ, আমি আপনার মন্তব্যটি কয়েকবার অতিক্রম করতে দেখেছি এবং এটি আমাকে কেবল আঘাত করেছে যে আপনি বলেছেন ১ 16 গিগাবাইট !! যদিও আমি পুরোপুরি নিশ্চিত যে আপনি সঠিক যে এটির ফলে প্রচুর বিলম্ব হতে পারে, তবে আমি যাচাই করতে চাই যে আপনি সমস্ত অদলবদল অক্ষম করেছেন। একটি বৃহত মেমরি সিস্টেমে, জাভাগুলির যে কোনও অদলবদল আপনার সিস্টেমকে একেবারে মেরে ফেলবে (কারণ জিসি খুব স্ব্যাপ-বন্ধুত্বপূর্ণ)। আমি নিশ্চিত যে আপনি ইতিমধ্যে এটি করেছেন, তবে আমি কেবল এটি উল্লেখ করতে চেয়েছিলাম - কারণ এটি এত বিশাল পার্থক্য আনবে। আমি এতটা র্যাম সহ কোনও পিসি দেখিনি - আপনার কতটুকু আছে? 32 জি?
বিল কে

8
হ্যাঁ, জিসিগুলি সেবার ক্ষেত্রে সমস্যাযুক্ত যেগুলি সেগুলির কারণেই এটি টিপি 99.9 (এবং উচ্চতর) সীমা উন্নত করা খুব কঠিন করে তোলে। বিশেষত "পুরাতন প্রজন্মের" জিসিগুলি মৃত্যুর ফাঁদ হতে পারে যা জেভিএম (এবং পরিষেবা) ব্যতীত একাধিক সেকেন্ডের জন্য জমে থাকে; এবং পরিষেবাগুলির জন্য যা সাধারণত একক-অঙ্কের (বা কম ডাবল-ডিজিট) মিলি সেকেন্ডে অনুরোধগুলি সরবরাহ করে এটি সমস্যাযুক্ত। এটির মূল্যের জন্য অ্যামাজনের সাধারণ সারি ক্যু পরিষেবাটি ব্যবহার করে ব্যাকএন্ড স্টোরেজ ব্যবহার করা একটি ব্যবহারিক সমস্যা ছিল (এডাব্লুএস অভ্যন্তরীণ হিসাবে এটি বিশদ বিবরণে যেতে পারে না)।
স্টেক্সম্যান

21
জিসি সম্পর্কে বিরক্তিকর বিষয়টি হ'ল আজুল বহু বছর আগে উদ্ভাবিত জিসি অ্যালগরিদম (আজুল সি 4) আবিষ্কার করেছিলেন যা প্রসেসরের মেমরি হার্ডওয়ারের খুব চতুর ব্যবহার করে সহজেই কিছু বিরাম বিরতি ছাড়াই কয়েকশ গিগা বাইট সহ সহজেই মোকাবেলা করতে পারে। তবে এটি কেউ জানে না এবং শীঘ্রই এটি বড় জাভা সংস্করণগুলিতে প্রয়োগ করা হবে না কারণ এটি অপারেটিং সিস্টেমের দ্বারা কিছু সমর্থন প্রয়োজন। এবং অপারেটিং সিস্টেমের বিক্রেতারা অ্যালগরিদম সম্পর্কে লোকেদের না জানানো এবং অপারেটিং সিস্টেমের বিক্রেতাদের উপর চাপ না দেওয়া পর্যন্ত কিছুই করবে না। দেখুন অ্যাজুলসিস্টমস্জিং / পিজিসি , পরিচালিতআরটাইম.অর্গ
হ্যান্স-পিটার স্টার

58

আমি এটি ভারী অ্যাপ্লিকেশন দিয়ে পরীক্ষা করে দেখছি: যে কোনও সময় 20-50GB ব্যবহারের সাথে 60-70 জিবি গাদা বরাদ্দ। এই ধরণের অ্যাপ্লিকেশন সহ, আপনার মাইলেজটি বিভিন্ন হতে পারে তা বলাই বাহুল্য। আমি লিনাক্সে জেডিকে 1.6_22 চালাচ্ছি। গৌণ সংস্করণগুলি গুরুত্বপূর্ণ - প্রায় 1.6_20 এর আগে, জি 1 এ বাগগুলি ছিল যা এলোমেলো নালপয়েন্টার এক্সসেপশনগুলির কারণ হয়েছিল।

আমি খুঁজে পেয়েছি যে আপনি বেশিরভাগ সময় দেন এমন বিরতি লক্ষ্যমাত্রার মধ্যে রেখে রাখা খুব ভাল। ডিফল্টটি 100 মিমি (0.1 সেকেন্ড) বিরতি বলে মনে হয় এবং আমি এটি অর্ধেক করতে বলছি (-এক্সএক্স: ম্যাক্সসিসিপিউসমিলিস = 50)। যাইহোক, এটি একবার মেমরির সত্যই কম হয়ে যায়, এটি আতঙ্কিত হয় এবং বিশ্বব্যাপী আবর্জনা সংগ্রহ বন্ধ করে দেয়। 65 জিবি সহ এটি 30 সেকেন্ড এবং 2 মিনিটের মধ্যে সময় নেয়। (সিপিইউগুলির সংখ্যা সম্ভবত কোনও তাত্পর্য দেয় না; এটি সম্ভবত বাসের গতিতে সীমাবদ্ধ))

সিএমএসের সাথে তুলনা করা (যা ডিফল্ট সার্ভার জিসি নয়, তবে এটি ওয়েব সার্ভার এবং অন্যান্য রিয়েল-টাইম অ্যাপ্লিকেশনগুলির জন্য হওয়া উচিত), সাধারণ বিরতিগুলি আরও বেশি অনুমানযোগ্য এবং এটিকে আরও খাটো করা যায়। এখন পর্যন্ত আমি বিশাল বিরতিগুলির জন্য সিএমএসের সাথে আরও ভাল ভাগ্য অর্জন করছি, তবে এটি এলোমেলো হতে পারে; আমি প্রতি 24 ঘন্টা কয়েক বার তাদের দেখতে পাচ্ছি। আমি নিশ্চিত না এই মুহূর্তে আমার উত্পাদন পরিবেশে কোনটি আরও উপযুক্ত হবে, তবে সম্ভবত জি 1। যদি ওরাকল এটি চালিয়ে যায় তবে আমার সন্দেহ হয় যে জি 1 শেষ পর্যন্ত স্পষ্ট বিজয়ী হবে winner

যদি আপনার বিদ্যমান আবর্জনা সংগ্রহকারীদের সাথে সমস্যা না হয় তবে এখনই জি 1 কে বিবেচনা করার কোনও কারণ নেই। আপনি যদি একটি জিইউআই অ্যাপ্লিকেশনের মতো স্বল্প-অলসতা অ্যাপ্লিকেশন চালিয়ে যাচ্ছেন তবে ম্যাক্সসিসিপিউসমিলিস সত্যিই কম সেট সহ জি 1 সম্ভবত সঠিক পছন্দ। আপনি যদি ব্যাচ-মোড অ্যাপ্লিকেশন চালাচ্ছেন তবে জি 1 আপনাকে কিছু কিনবে না।


14

যদিও আমি উত্পাদনে জি 1 পরীক্ষা করেছি না, আমি ভেবেছিলাম যে আমি মন্তব্য করব যে জিসিরা ইতিমধ্যে "হিউমোনাস" স্তূপ ছাড়াই মামলাগুলির জন্য সমস্যাযুক্ত। বিশেষত ন্যায়বিচার, 2, 4 জিগ সহ পরিষেবাদিগুলি GC দ্বারা মারাত্মকভাবে প্রভাবিত হতে পারে। তরুণ প্রজন্মের জিসিগুলি সাধারণত একক-অঙ্কের মিলিসেকেন্ডে (বা সর্বাধিক ডাবল ডিজিট) শেষ হওয়ার কারণে সমস্যাযুক্ত হয় না। পুরানো-প্রজন্মের সংগ্রহগুলি আরও বেশি সমস্যাযুক্ত কারণ তারা পুরানো-জেন মাপের 1 গিগ বা তার বেশি একাধিক সেকেন্ড সময় নেয়।

এখন: তাত্ত্বিকভাবে সিএমএস সেখানে প্রচুর সহায়তা করতে পারে, কারণ এটি বেশিরভাগ অপারেশন একই সাথে চালাতে পারে। তবে সময়ের সাথে সাথে এমন কেস পাওয়া যাবে যেখানে এটি এটি করতে পারে না এবং "দুনিয়া বন্ধ করুন" সংগ্রহের পিছনে পড়ে যেতে হয়। এবং যখন এটি ঘটে (পরে, বলুন, 1 ঘন্টা - প্রায়শই নয়, তবে এখনও খুব প্রায়ই), ভাল, আপনার চ *** আইএনজি টুপি ধরে রাখুন। এটি এক মিনিট বা আরও বেশি সময় নিতে পারে। এটি বিশেষত পরিষেবাগুলির ক্ষেত্রে সমস্যাযুক্ত যা সর্বাধিক বিলম্বকে সীমাবদ্ধ করার চেষ্টা করে; এটি গ্রহণের পরিবর্তে, বলুন, একটি অনুরোধ পরিবেশন করতে 25 মিলিসেকেন্ডে এখন দশ সেকেন্ড বা তার বেশি সময় লাগে। অপমান ক্লায়েন্টদের আঘাত যোগ করার জন্য প্রায়শই অনুরোধটি শেষ হয়ে যায় এবং পুনরায় চেষ্টা করে আরও সমস্যা দেখা দেয় (ওরফে "ছিঁড়ে ঝড়")।

এটি এমন একটি অঞ্চল যেখানে জি 1 অনেক সাহায্য আশা করেছিল। আমি একটি বড় সংস্থার পক্ষে কাজ করেছি যা স্টোরেজ এবং বার্তা প্রেরণের জন্য মেঘ পরিষেবা সরবরাহ করে; এবং আমরা সিএমএস ব্যবহার করতে পারিনি যেহেতু সমান্তরাল জাতগুলির তুলনায় এটি বেশিরভাগ সময় ভাল কাজ করেছিল, তবে এটিগুলির গতিবেগ ছিল। প্রায় এক ঘন্টা জিনিস ছিল দুর্দান্ত; এবং তারপরে স্ট্যানটি ফ্যানটিকে আঘাত করেছিল ... এবং কারণ পরিষেবাগুলি ক্লাস্টারগুলির উপর ভিত্তি করে ছিল, যখন একটি নোড সমস্যায় পড়ে, অন্যরা সাধারণত অনুসরণ করে (যেহেতু জিসি-প্ররোচিত সময়সীমা অন্যান্য নোডগুলিকে বিশ্বাস করে যে নোড ক্র্যাশ হয়েছিল এবং পুনরায় রুটের দিকে নিয়ে যায়)।

আমি মনে করি না অ্যাপ্লিকেশানগুলির জন্য জিসি বেশিরভাগ সমস্যা, এবং সম্ভবত ক্লাস্টারবিহীন পরিষেবাগুলিও প্রায়শই প্রভাবিত হয়। তবে আরও বেশি সংখ্যক সিস্টেমে ক্লাস্টার করা হয়েছে (উদাঃ নোএসকিউএল ডেটা স্টোরকে ধন্যবাদ) এবং হিপ আকারগুলি বাড়ছে। ওল্ডজেন জিসিগুলি হ্যাপের আকারের সাথে অত্যন্ত লিনিয়ারলি সম্পর্কিত (যার অর্থ লাইভ ডেটা সেটের আকারও দ্বিগুণ হয়ে থাকে, তার অর্থ হ'ল জিসি সময় দ্বিগুণের চেয়ে বেশি আকারের আকার)।


13

আজুলের সিটিও, গিল তেনি, জঞ্জাল সংগ্রহের সাথে জড়িত সমস্যাগুলির একটি দুর্দান্ত সংক্ষিপ্ত বিবরণ এবং জাভা আবর্জনা সংগ্রহের বোঝার বিষয়ে বিভিন্ন সমাধানের একটি পর্যালোচনা এবং এটি সম্পর্কে আপনি কী কী উপস্থাপনা করতে পারেন , এবং এই নিবন্ধে অতিরিক্ত বিশদ রয়েছে: http: // www.infoq.com/articles/azul_gc_in_detail

আমাদের জিঙ জেভিএম-এ অ্যাজুলের সি 4 আবর্জনা সংগ্রাহক উভয়ই সমান্তরাল এবং একই সাথে একই, এবং একই সাথে নতুন এবং পুরানো উভয় প্রজন্মের জন্য একই জিসি প্রক্রিয়া ব্যবহার করে, একই সাথে উভয় ক্ষেত্রে একই সাথে কাজ করে এবং সংহত করে। সর্বাধিক গুরুত্বপূর্ণ, সি 4 এর কোনও স্টপ-দ্য ওয়ার্ল্ড পিছনে নেই। সমস্ত সংযোগ চলমান অ্যাপ্লিকেশন সাথে একযোগে সঞ্চালিত হয়। আমাদের গ্রাহকরা খুব বড় আকারের (শত শত গিগাবাইট) চলমান রয়েছেন <10 ম্যাস্কের জিসি বিরতির ক্ষেত্রে, এবং অ্যাপ্লিকেশনটির উপর নির্ভর করে প্রায়শই 1-2 ম্যাসেকেরও কম গুনে থাকেন।

সিএমএস এবং জি 1 এর সমস্যাটি হ'ল এক পর্যায়ে জাভা হিপ মেমরিটি অবশ্যই সংক্ষিপ্ত করা উচিত এবং সেই সমস্ত আবর্জনা সংগ্রহকারী উভয়ই দুনিয়া / এসটিডাব্লু (অর্থাৎ অ্যাপ্লিকেশনটিকে বিরতি দেয়) সংযোগ করতে। সুতরাং যখন সিএমএস এবং জি 1 এসটিডাব্লু বিরতি দিতে পারে, তারা সেগুলি সরিয়ে দেয় না। আজুলের সি 4 এসটিডাব্লু বিরামগুলি সম্পূর্ণরূপে মুছে ফেলেছে এবং এ কারণেই জিং এমন কম জিসি বিরতি এমনকি বিশাল আকারের আকারের জন্যও রয়েছে।

এবং পূর্বের উত্তরে দেওয়া একটি বিবৃতি সংশোধন করতে, জিং অপারেটিং সিস্টেমে কোনও পরিবর্তন প্রয়োজন হয় না। এটি অন্য যে কোন জেভিএমের মতোই অচিরত লিনাক্স ডিস্ট্রোজে চলে।


4
আমি কেবল আশ্চর্য হয়েছি যে আজুলের সি 4 কী বলেছিল যা আপনি বলেছেন এবং কেন সান বা ওরাকল পারবেন না। কিছু বড় গোপন রহস্য আছে বা এটি কেবল কিছু ধরণের বাণিজ্য বন্ধ?
জর্জ

4
আজুলের সি 4-তে খুব অনন্য প্রযুক্তি রয়েছে যা এর উদ্ভব আজুলের হার্ডওয়্যার কম্পিউট অ্যাপ্লায়েন্সগুলিতে (যা এন্টারপ্রাইজ জাভা অ্যাপ্লিকেশনগুলি চালনার জন্য নির্মিত বিশেষ প্রসেসর ব্যবহার করে) এবং লিনাক্সে চলমান নিয়মিত এক্স ৮86vers সার্ভারে চালিত হয়ে বিকশিত হয়েছে। অন্যান্য প্রতিটি এন্টারপ্রাইজ-শ্রেণীর আবর্জনা সংগ্রহকারী (ওরাকল বা আইবিএম থেকে হোক না কেন) এক পর্যায়ে বিশ্ব বিরতি করতে হবে - আজুলের সি 4 এর অনন্য বৈশিষ্ট্যটি হ'ল এটি কখনও এই সমস্যাযুক্ত এসটিডাব্লু বিরতি দেয় না। আপনি যদি কৌতূহলী হন তবে সি 4 সংগ্রাহকের উদ্ভাবকরা এটি কীভাবে কাজ করে তার উপর একটি কাগজ প্রকাশ করেছিলেন: dl.acm.org/citation.cfm?id=1064988
স্কট বিক্রেতারা

স্কট, আমি এখানে blog.mikemccandless.com/2012/07/… পড়েছি যে আজুল একটি কার্নেল মডিউলটি জাহাজে সরবরাহ করে যা জেভিএম ব্যবহারের জন্য মেমরিকে প্রাক-বরাদ্দ করে। এটা কি সত্য নয়? সত্য হিসাবে, কার্নেল পরিবর্তনের বেশি নয় তবে এখনও একটি পরিবর্তন mod
ড্যান প্রিটস

4
জর্জ, দুটি শব্দ: পেটেন্ট সুরক্ষিত। ড্যান, আপনি যখন জিিং কিনেছেন তখন আপনি যা প্রদান করছেন তার একটি অংশ তাদের সমর্থনকারী লোকেরা আপনার অ্যাপ্লিকেশনটির জন্য এটি টিউন করছে - এবং এতে সামগ্রিক সিস্টেমের মেমোরি ব্যবহার বরাদ্দ করাও অন্তর্ভুক্ত। কার্নেল মডিউল নিজেই একটি মেমরি ব্লকে লেখার বাধা দেয় যা আবর্জনা সংগ্রহ করা হচ্ছে। এটি সেই গোপন সস যা এটি "বিরামহীন" করে তোলে: থ্রেডগুলি কেবল তখন বিরতি দেয় যদি তারা those ব্লকগুলির মধ্যে একটিতে লেখার চেষ্টা করে, এবং কেবলমাত্র সেই ব্লকটি সংহত করার জন্য যথেষ্ট দীর্ঘ।
ডেভিড লেপপিক

13

আমরা ইতিমধ্যে প্রায় দুই বছর থেকে জি 1 জিসি ব্যবহার করছি। এটি আমাদের মিশনের সমালোচনামূলক লেনদেন প্রক্রিয়াকরণ ব্যবস্থায় দুর্দান্ত কাজ করেছে এবং এটি একটি দুর্দান্ত সমর্থন হিসাবে প্রমাণিত হয়েছে উচ্চ থ্রুটপুট, কম বিরতি, একমত এবং ভারী মেমরি পরিচালনা অনুকূলিতকরণ।

আমরা নিম্নলিখিত JVM সেটিংস ব্যবহার করছি:

-server -Xms512m -Xmx3076m -XX:NewRatio=50 -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:+AggressiveOpts -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=8000 -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCApplicationConcurrentTime

আপডেট হয়েছে

-d64 -server -Xss4m -Xms1024m -Xmx4096m -XX:NewRatio=50 -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:+HeapDumpOnOutOfMemoryError -XX:-DisableExplicitGC -XX:+AggressiveOpts -Xnoclassgc -XX:+UseNUMA -XX:+UseFastAccessorMethods -XX:ReservedCodeCacheSize=48m -XX:+UseStringCache -XX:+UseStringDeduplication -XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=8000

4
জাভা 8 এ, আপনাকে এক্সএক্সএক্স সেট করতে হবে না: + ইউজকম্প্রেসডঅপস বা-এক্সএক্স: + ডোএস্কেপ অ্যানালাইসিস, বুথটি ডিফল্ট হিসাবে রয়েছে। দেখুন: docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html
মিরকো এবার্ট

8

জি 1 সংগ্রাহক সম্পূর্ণ সংগ্রহের প্রভাব হ্রাস করে। আপনার যদি এমন কোনও অ্যাপ্লিকেশন থাকে যেখানে আপনি ইতিমধ্যে সম্পূর্ণ সংগ্রহের প্রয়োজনীয়তা হ্রাস করেছেন, সমকালীন মানচিত্রের সুইপ সংগ্রহকারী ঠিক ততটাই ভাল এবং আমার অভিজ্ঞতায় ছোট সংগ্রহের সময়ও কম।


"নোট করুন যে জি -1 এর উত্পাদন ব্যবহারের অনুমতি কেবলমাত্র যেখানে জাভা সমর্থন চুক্তি ক্রয় করা হয়েছে" ", গোষ্ঠীগুলি google.com/forum/#!topic/javaposse/Vm0a4H-QY54 , তাই এটি কোনও মিথ নয়?
ক্রিস্টোফ রাউসি

4
@ ক্রিস্টোফেরসৌসি আমি জানি না এটি আরও সত্য কিনা (অথবা প্রকৃতপক্ষে এটি সত্য ছিল কিনা তার প্রমাণ আছে) এটির জন্য -XX: + আনলককমার্সিয়াল ফিচারস লাগবে না তাই আমার সন্দেহ হয় যে জি 1 এর লাইসেন্সের দরকার নেই।
পিটার লরে

5

দেখে মনে হচ্ছে জে 1 কে জেডি কে 7 ইউ 4 টি শেষ পর্যন্ত আনুষ্ঠানিকভাবে সমর্থনযোগ্য, জেডিকে 7 ইউ 4 এর জন্য আরএন দেখুন http://www.oracle.com/technetwork/java/javase/7u4-relnotes-1575007.html

আমাদের টেস্টিং থেকে এখনও বড় জেভিএম সুরযুক্ত সিএমএস এখনও জি 1 এর চেয়ে ভাল কাজ করে তবে আমার ধারণা এটি আরও ভাল হবে।


5

সম্প্রতি আমি এখান থেকে সরে এসেছি

4 জি গাদা & JDK 1.7.45 সঙ্গে সার্ভারে 8 কোর প্রসেসর সঙ্গে G1GC জন্য CMS

(JDK 1.8.x G1GC 1.7 এর চেয়ে বেশি পছন্দ করা হয়েছে তবে কিছু সীমাবদ্ধতার কারণে আমাকে 1.7.45 সংস্করণে থাকতে হবে)

আমি কী প্যারামিটারগুলির নীচে কনফিগার করেছি এবং অন্যান্য সমস্ত পরামিতিগুলি ডিফল্ট মানগুলিতে রেখেছি।

-XX:G1HeapRegionSize=n, XX:MaxGCPauseMillis=m, -XX:ParallelGCThreads=n, 
-XX:ConcGCThreads=n apart from -Xms and -Xmx

আপনি যদি এই প্যারামিটারগুলি টিউন করতে চান তবে এই ওরাকল নিবন্ধটি একবার দেখুন।

মূল পর্যবেক্ষণ:

  1. মেমরির ব্যবহার সিএমএসের সাথে হাই এবং লোগুলির বিপরীতে G1GC এর সাথে সামঞ্জস্যপূর্ণ
  2. সিএমএসের তুলনায় সর্বাধিক জিসি বিরতি সময় কম is
  3. সিএমএসের তুলনায় জি 1 জিসিতে আবর্জনা সংগ্রহ করতে ব্যয় করা সময়টি কিছুটা বেশি।
  4. সিএমএসের তুলনায় বড় সংগ্রহের সংখ্যা প্রায় নগণ্য
  5. নাবালিক সংগ্রহের সংখ্যা সিএমএসের তুলনায় উচ্চতর পর্যায়ে রয়েছে

তবে তবুও আমি খুশি যে ম্যাক্স জিসি বিরতি সময় সিএমএসের চেয়ে কম is আমি ম্যাক্স জিসি বিরতি সময়কে 1.5 সেকেন্ড হিসাবে সেট করেছি এবং এই মানটি এখনও অতিক্রম করা যায় নি।

সম্পর্কিত এসই প্রশ্ন:

জাভা 7 (জেডিকে 7) আবর্জনা সংগ্রহ এবং জি 1 তে নথিপত্র


4

আপনি যদি ট্যুরড অবজেক্টগুলি জমা না করে এটি চালনা করেন তবে সিএমএস ধীরে ধীরে হ্রাসপ্রাপ্ত কর্মক্ষমতা হতে পারে। এটি মেমরি খণ্ডনের কারণে যা G1 সম্ভবত এড়ানো হয়।

কেবল অর্থ প্রদানের সহায়তায় জি 1 সম্পর্কে প্রচলিত কল্পকাহিনীটি কেবল এটিই একটি পৌরাণিক কাহিনী। সান এবং এখন ওরাকল জেডিকে পৃষ্ঠায় এটি পরিষ্কার করেছে।


4

জি 1 জিসির আরও ভাল কাজ করার কথা রয়েছে। তবে যদি এক্সএক্সএক্স সেট করা থাকে: ম্যাক্সজিসিপিউজমিলিস খুব আক্রমণাত্মকভাবে, আবর্জনা খুব ধীরে ধীরে সংগ্রহ করা হবে। এবং সে কারণেই ডেভিড লেপপিকের উদাহরণে পুরো জিসি ট্রিগার করেছিল।


4

আমি সবেমাত্র আমাদের টেরাকোটা বিগ মেমোরি প্রকল্পে জি 1 আবর্জনা সংগ্রাহক কার্যকর করেছি। বিভিন্ন ধরণের সংগ্রাহকগুলিতে কাজ করার সময় জি 1 আমাদের 600 ম্যাস এরও কম সময় সাফল্যের সাথে সেরা ফলাফল দিয়েছে।

আপনি পরীক্ষার ফলাফল জানতে পারেন (মোট 26) এখানে

আশা করি এটা সাহায্য করবে.


3

আমি সম্প্রতি টোলসির কিছু অংশ 128 জিবি র‌্যাম সহ একটি নতুন সার্ভারে স্থানান্তরিত করেছি এবং 1.7 ব্যবহার করার সিদ্ধান্ত নিয়েছি। আমি ১.6 ব্যবহার করে একই মেমরির সমস্ত সেটিংস ব্যবহার শুরু করেছি (আমার কাছে বিভিন্ন কাজ চলমান বিভিন্ন উদাহরণ রয়েছে, যে কোনও জায়গায় 500 এমবি থেকে 15 গিগাবাইট পর্যন্ত, এবং এখন 40 জিবি সহ একটি নতুন) এবং এটি মোটেই কার্যকর হয়নি that । 1.7 টি 1.6 এর চেয়ে বেশি গাদা ব্যবহার করেছে বলে মনে হয় এবং প্রথম কয়েক দিন আমি বেশ কয়েকটি সমস্যার মুখোমুখি হয়েছি। ভাগ্যক্রমে আমার বেশিরভাগ প্রক্রিয়ার জন্য র‌্যামের সাথে কাজ করার জন্য প্রচুর পরিমাণে র‌্যাম পেয়েছিল এবং এখনও কিছু সমস্যা ছিল। আমার স্বাভাবিক এমও হ'ল বেশ কয়েকটি গিগাবাইটের সর্বাধিক গাদা থাকা সত্ত্বেও 16 মিটারের খুব ছোট ন্যূনতম হিপ আকারটি ব্যবহার করা ছিল, তারপরে ইনক্রিমেন্টাল জিসি চালু করুন। এটি বিরতি সর্বনিম্ন রাখে। যদিও এটি এখন কাজ করে না, এবং আমাকে গাদাতে গড় হিসাবে আমি কীভাবে প্রত্যাশা করেছিলাম সে সম্পর্কে নূন্যতম আকার বাড়াতে হয়েছিল, এবং এটি খুব ভাল কাজ করেছে। আমি এখনও ইনক্রিমেন্টাল জিসি চালু করেছি, তবে আমি এটি ছাড়া চেষ্টা করব will এখন যা কিছু থামছে না এবং জিনিসগুলি খুব দ্রুত চলছে বলে মনে হচ্ছে। সুতরাং, আমি মনে করি গল্পটির নৈতিকতা আপনার মেমরি সেটিংসের 1.6 থেকে 1.7 থেকে পুরোপুরি অনুবাদ করার আশা করবেন না।


2

জি 1 অ্যাপ্লিকেশনটিকে আরও চটপটে করে তোলে: অ্যাপ্লিকেশনটির শেষত্ব বাড়বে - অ্যাপটিকে "সফট-রিয়েল-টাইম" হিসাবে নামকরণ করা যেতে পারে। এটি দুটি ধরণের জিসি রান (ছোট ছোট ছোট ছোট এবং এক বড় টেনুর জেনার) এর পরিবর্তে সমান আকারের ছোট ছোটদের দ্বারা করা হয়।

আরও তথ্যের জন্য এটি দেখুন: http://geekroom.de/java/java-expertise-g1-fur-java-7/


1

আমি জাভাতে ছোট এবং বড় স্তূপের জন্য কাজ করছি, এবং প্রতিদিন জিসি এবং ফুল জিসির প্রশ্নটি উপস্থিত হয়, কারণ অন্যদের চেয়ে প্রতিবন্ধকতা আরও কঠোর হতে পারে: নির্দিষ্ট পরিবেশে, স্কেভেনজার জিসি বা ফুল জিসির 0.1 সেকেন্ড, হত্যা কেবলমাত্র ফাংশনালিটé, এবং জরিমানাযুক্ত দানযুক্ত কনফিগারেশন এবং দক্ষতা গুরুত্বপূর্ণ (সিএমএস, আইসিএমএস, অন্যান্য) ... লক্ষ্যটি এখানে প্রায় রিয়েল টাইম চিকিত্সার সাথে সর্বোত্তম সম্ভাব্য প্রতিক্রিয়ার সময় পাওয়ার জন্য রয়েছে (এখানে আসল সময় চিকিত্সা প্রায়শই 25 এমএস হয়) , সুতরাং, মূলত, জিসি এরগনোমী আনিস হিউরিস্টিকের কোনও উন্নতি স্বাগত!


1

আমি জাভা 8 এ এবং গ্রোভির (এছাড়াও জাভা 8) এর সাথে জি 1 জিসি ব্যবহার করি এবং আমি বিভিন্ন ধরণের কাজের চাপ করছি, এবং জোর করে জি 1 জিসি এই জাতীয় কাজ করে:

  • মেমরির ব্যবহার খুব কম, যেমন ডিফল্ট জাভা সেটিংসের তুলনায় 500MB এর পরিবর্তে 100MB

  • প্রতিক্রিয়া সময় সামঞ্জস্যপূর্ণ এবং খুব কম

  • ডিফল্ট সেটিংস এবং G1GC এর মধ্যে পারফরম্যান্স খারাপ অবস্থার ক্ষেত্রে (টিউনিং, একক থ্রেডযুক্ত অ্যাপ্লিকেশন ছাড়াই) G1GC ব্যবহার করার সময় 20% ধীরগতি হয়। এটি ভাল প্রতিক্রিয়া সময় এবং কম মেমরির ব্যবহার বিবেচনা করে না।

  • টমক্যাট থেকে চলার সময় যা বহু-থ্রেডযুক্ত, সামগ্রিক কর্মক্ষমতা 30% ভাল এবং মেমরির ব্যবহার অনেক কম হয় পাশাপাশি প্রতিক্রিয়ার সময়গুলিও অনেক কম থাকে।

সুতরাং সামগ্রিকভাবে, সত্যিই বিভিন্ন কাজের চাপ ব্যবহার করার সময়, জি 1 জিসি জাভা 8 এর জন্য মাল্টি-থ্রেড অ্যাপ্লিকেশনগুলির জন্য খুব ভাল সংগ্রাহক এবং এমনকি সিঙ্গল-থ্রেডযুক্ত কিছু সুবিধা রয়েছে।


0

হটস্পটের মতো জেভিএম সহ ফ্লোট পয়েন্ট গণনার জন্য জাভা 8 ডাব্লু / জি 1 জিসি ব্যবহার করার পরামর্শ দেওয়া হয়নি। এটি প্রয়োগের সততা এবং নির্ভুলতার জন্য বিপজ্জনক।

https://bugs.openjdk.java.net/browse/JDK-8148175

JDK-8165766

জেডিকে -8186112

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