আমি ভাবতাম যে এটি না, তবে গতকাল আমাকে এটি করতে হয়েছিল। এটি এমন একটি অ্যাপ্লিকেশন যা অ্যাস্ক্রোনাস জবগুলি প্রক্রিয়া করার জন্য আক্কা ( জেভিএমের জন্য একটি অভিনেতা সিস্টেম প্রয়োগকরণ) ব্যবহার করে। একজন অভিনেতা কিছু পিডিএফ ম্যানিপুলেশন সম্পাদন করেন এবং লাইব্রেরিটি বগি হওয়ায় এটি StackOverflowErrorএখন এবং পরে মারা যায় ।
দ্বিতীয় দিকটি হ'ল কোনও জেভিএম মারাত্মক ত্রুটি (উদাহরণস্বরূপ স্ট্যাকওভারফ্লো এরর) ধরা পড়লে আক্কা তার পুরো অভিনেতা সিস্টেমটি বন্ধ করতে কনফিগার করা হয়েছে।
তৃতীয় দিকটি হ'ল এই অভিনেতা সিস্টেমটি একটি ওয়েব অ্যাপের অভ্যন্তরে এম্বেড করা আছে (ডাব্লুটিএফ-ইশ, উত্তরাধিকার, কারণগুলির জন্য), তাই যখন অভিনেতা সিস্টেমটি বন্ধ থাকে তখন ওয়েব অ্যাপটি হয় না। এর নিখরচায় প্রভাবটি হল StackOverflowErrorআমাদের কোনও কাজের প্রক্রিয়াকরণ অ্যাপ্লিকেশন কেবল একটি খালি ওয়েব অ্যাপ্লিকেশন হয়ে যায়।
দ্রুত সমাধান হিসাবে আমাকে StackOverflowErrorনিক্ষিপ্ত হচ্ছে ধরা পড়তে হয়েছিল , যাতে অভিনেতা সিস্টেমের থ্রেড পুলটি ছিন্ন না হয়। এটি আমাকে ভাবতে পরিচালিত করে যে সম্ভবত কখনও কখনও বিশেষত এরকম প্রসঙ্গে এই জাতীয় ত্রুটিগুলি ধরা ঠিক আছে? যখন কোনও থ্রেড পুল প্রক্রিয়াজাতকরণ কাজ করে? একজনের বিপরীতে OutOfMemoryErrorআমি কল্পনাও করতে পারি না কীভাবে কোনও StackOverflowErrorকোনও অসঙ্গতিপূর্ণ অবস্থায় কোনও অ্যাপ্লিকেশন ছেড়ে যেতে পারে। স্ট্যাকটি এই জাতীয় ত্রুটির পরে সাফ হয়ে যায়, তাই সাধারণভাবে গণনা চলতে পারে। তবে সম্ভবত আমি গুরুত্বপূর্ণ কিছু মিস করছি।
এছাড়াও, এটি লক্ষ্য করা যাক যে আমি প্রথমে ত্রুটিটি ঠিক করার জন্য সমস্তই (সত্য হিসাবে আমি ইতিমধ্যে কিছুদিন আগে এই একই অ্যাপ্লিকেশনটিতে একটি এসওই স্থির করেছি) তবে আমি কখনই জানি না এটি কখন এক ধরণের পরিস্থিতি দেখা দিতে পারে।
কেন জেভিএম প্রক্রিয়াটি পরিবর্তনের পরিবর্তে পুনরায় আরম্ভ করা, সেই কাজটিকে StackOverflowErrorব্যর্থ হিসাবে চিহ্নিত করা এবং আমার ব্যবসা চালিয়ে যাওয়া ভাল হবে?
এসওইগুলি কখনই ধরার কোনও জোরালো কারণ নেই? "সেরা অনুশীলন" ব্যতীত, এটি একটি অস্পষ্ট শব্দ যা আমাকে কিছুই বলে না।
StackOverflowExceptionগুলি সাধারণত পদ্ধতি কলগুলির অ-সমাপ্ত চেইনের কারণে হয় - স্ট্যাকের জায়গা বাড়ানো কোনও লাভের জন্য নতুন থ্রেডের মেমরির ব্যয়কে বাড়িয়ে তুলবে।
:-)