জাভাতে গাদা আকার বাড়ান


276

আমি 8 জিবি র‌্যাম সহ একটি উইন্ডোজ 2003 সার্ভারে (-৪-বিট) কাজ করছি। আমি কীভাবে সর্বোচ্চ স্তরের স্মৃতি বাড়াতে পারি? আমি -Xmx1500mগাদা আকারটি 1500 এমবিতে বাড়ানোর জন্য পতাকাটি ব্যবহার করছি । আমি কি হিপ মেমরির দৈহিক মেমরির 75% (6 গিগাবাইট হিপ) বাড়িয়ে দিতে পারি?


2
আপনি চেষ্টা করেছেন -Xmx6g? এটি কি কাজ করে না? আপনি কি পালন করেছেন?
অক্সবো_লাক্স

2
আমার ধারণা আপনি গাদা বাড়ানোর চেষ্টা করেছেন কিন্তু ব্যর্থ হয়েছেন? আপনি কি একটি 64 বিট জেভিএম ব্যবহার করছেন?
বার্ট কায়ার্স

মন্তব্যের জন্য ধন্যবাদ তবে এটি কাজ করছে না
সুনীল

ঠিক আছে - আপনি কীভাবে জানেন যে এটি কাজ করছে না? জেভিএম কি শুরু হয় না?
অক্সবো_লাক্স

উত্তর:


327

আপনি 32 বিট সিস্টেমে 4 গিগাবাইটে বাড়িয়ে নিতে পারেন। আপনি যদি একটি 64 বিট সিস্টেমে থাকেন তবে আপনি আরও উচ্চতর যেতে পারেন। আপনি যদি ভুলভাবে বেছে নিয়ে থাকেন তবে চিন্তার দরকার নেই, আপনি যদি 32 বিট সিস্টেমের জাভাতে 5 জি জিজ্ঞাসা করেন তবে এটি একটি অবৈধ মান সম্পর্কে অভিযোগ করবে এবং প্রস্থান করবে।

অন্যরা যেমন পোস্ট করেছে, সেমিডি-লাইন পতাকা ব্যবহার করবে - যেমন

java -Xmx6g myprogram

আপনি জাভা-এক্স টাইপ করে একটি সম্পূর্ণ তালিকা (বা যাইহোক প্রায় সম্পূর্ণ তালিকা,) পেতে পারেন।


16
এটি আমার অভিজ্ঞতা হয়েছে যে আসল হিপ সাইজ জাভা একটি 32 বি ভিএম (32b বা 64 বি সিস্টেমে - ভিএম গুরুত্বপূর্ণ অংশ, এখানে) ব্যবহার করে 2G এর কাছাকাছি গ্রহণ করবে। এছাড়াও, বিস্মিত প্রশ্নকর্তা প্রথম সার্চ না খুঁজে পেয়েছেন: stackoverflow.com/questions/1596009/... : এবং stackoverflow.com/questions/37335/...
wsorenson

2
আহ, আপনি অবশ্যই ঠিক - 32 বিট সিস্টেমে আপনি কেবল 2 জিবি মেমরির ঠিকানা দিতে পারেন।
স্টিভ বি

সর্বোচ্চ গাদা এবং সর্বনিম্ন গাদা আকার একই হওয়া কি প্রয়োজনীয়?
user1747935

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

1
ফিলিপগ্রিজ আপনি যা চান তা সেট করে জেভিএম সীমাবদ্ধ করতে পারে up -এক্সএমএক্স 2 জি আপনার স্মৃতি 2 জি সেট করে (এছাড়াও এক্সএক্স দেখুন)। আপনার কত স্মৃতি দরকার হবে তা এগুলি মোটেই কিছুই বলে না।
স্টিভ বি

155

কমান্ড লাইন বিকল্পগুলি ব্যবহার করে জেভিএম দ্বারা বরাদ্দ করা হিপ আকার বাড়ানো সম্ভব এখানে আমাদের কাছে 3 টি বিকল্প রয়েছে

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size

java -Xms16m -Xmx64m ClassName

উপরের লাইনে আমরা ন্যূনতম হিপ 16 এমবি এবং সর্বোচ্চ হিপ 64 এমবি সেট করতে পারি


28

একটি 32-বিট জেভিএম-তে, তাত্ত্বিকভাবে আপনি সেট করতে পারেন এমন বৃহত্তম স্তরের আকারটি 4 জিবি is বৃহত্তর হিপ আকার ব্যবহার করতে আপনাকে একটি -৪-বিট জেভিএম ব্যবহার করতে হবে। নিম্নলিখিত চেষ্টা করুন:

java -Xmx6144M -d64

-D64 পতাকাটি গুরুত্বপূর্ণ কারণ এটি JVM কে 64৪-বিট মোডে চালাতে বলে।


আপনাকে ধন্যবাদ বস তবে এটি আমার সিস্টেমে কাজ করছে না এমন অন্য কিছু আছে যা আমি মিস করছি
সুনীল

4
"কাজ করছে না" সংজ্ঞা দিন। এটি কি শুরু করে আপনাকে ত্রুটি দেয় না? এটি কি শুরু হয় তবে একটি পৃথক স্তরের আকার ব্যবহার করে?
কেভিন

11

জেভিএম কর্তৃক সরাসরি গ্রহণে বরাদ্দ হওয়া স্তূপের আকার বৃদ্ধি করা সম্ভব গ্রহন আইডিই গোটোয়

চালান ----> রান কনফিগারেশন ----> যুক্তি

-Xmx1g প্রবেশ করান (এটি Xmx256m বা Xmx1g এর মতো সর্বাধিক আকার নির্ধারণ করতে ব্যবহৃত হয় ...... এম -> এমবি জি ---> জিবি)


3
কেবল এটি যুক্ত করার জন্য একটি ভিএম যুক্তি হওয়া উচিত (গ্রহন আপনাকে দুটি বিকল্প দেয়)।
ম্যাট বয়েল

11

java -d64 -Xms512m -Xmx4g হ্যালো ওয়ার্ল্ড

যেখানে, -d64: 64-বিট জেভিএম-এক্সএমএস 512 সক্ষম করবে: প্রাথমিক হিপ আকার 512 এমবি হিসাবে নির্ধারণ করবে-এক্সএমএক্স 4 জি: সর্বোচ্চ গাদা আকার 4 জিবি হিসাবে সেট করবে (এখানে জাভা ফাইলের নাম হ্যালোওয়ার্ল্ড.জাভা)


9

আপনি নীচের মত জেভিএম প্যারামিটার- এক্সএম এবং- এক্সএমএক্স পেরিয়ে হিপ আকার বাড়িয়ে তুলতে পারেন:

জার ফাইলগুলির জন্য:

java -jar -Xms4096M -Xmx6144M jarFilePath.jar

জাভা ফাইলগুলির জন্য:

 java -Xms4096M -Xmx6144M ClassName

উপরের প্যারামিটারগুলি ইনিশিয়াল হিপসাইজ (-Xms) 4 জিবি (4096 এমবি) এবং ম্যাক্সহ্যাপসাইজ (-এক্সএমএক্স) 6 জিবি (6144 এমবি) এ বৃদ্ধি করে।

তবে, ইয়ং জেনারেশন হিপ সাইজ একই থাকবে এবং পুরাতন জেনারেশন হিপ সাইজে অতিরিক্ত হিপসাইজ যুক্ত করা হবে । ইয়ং জেন জেন হিপ এবং ওল্ড জেনার হিপের আকার সমান করতে , এক্সএক্সএক্স: নিউআরটিও = 1-এক্সএক্স: -উসএডেপটিভসাইজ পলিসি প্যারাম ব্যবহার করুন ।

java -jar -Xms4096M -Xmx6144M -XX:NewRatio=1 -XX:-UseAdaptiveSizePolicy pathToJarFile.jar

-এক্সএক্স: নিউআরটিও = ওল্ড জেনার হিপ সাইজ: ইয়ং জেনারেল হিপসাইজ (আপনার পছন্দসই অনুপাত পেতে আপনি এই অনুপাতের সাথে খেলতে পারেন)।


7

আমি কি হিপ মেমরির দৈহিক মেমরির 75% (6 গিগাবাইট হিপ) বাড়িয়ে দিতে পারি?

হ্যা, তুমি পারো. আসলে, আপনি চাইলে শারীরিক স্মৃতির পরিমাণের চেয়ে বেশি বৃদ্ধি করতে পারেন।

এটি করা ভাল ধারণা কিনা তা নির্ভর করে আপনার সিস্টেমে আর কত চলছে on বিশেষত, বর্তমানে চলমান অ্যাপ্লিকেশন এবং পরিষেবাদির "ওয়ার্কিং সেট" যদি উপলব্ধ শারীরিক মেমরির চেয়ে বেশি হয়ে যায় তবে আপনার সিস্টেমটি "থ্রেশ" এর জন্য দায়বদ্ধ, ভার্চুয়াল মেমরি পৃষ্ঠাগুলিকে ডিস্কে এবং স্থানান্তরিত করতে অনেক সময় ব্যয় করে। নেট এফেক্টটি হ'ল সিস্টেমটি মারাত্মক ধীর হয়ে যায়।


আপনার মন্তব্যের জন্য ধন্যবাদ তবে আমি কীভাবে বাড়াতে পারি P প্লিজ আপনি আদেশ দিতে পারেন।
সুনীল

-Xmx6000m চেষ্টা করুন। আপনি জাভা 64৪ বিট সংস্করণ ব্যবহার করছেন তবে এটি কাজ করা উচিত।
স্টিফেন সি

3
আপনি কি Java এর 64 বিট সংস্করণটি চালাচ্ছেন তা নিশ্চিত? একটি 64 বিট অপারেটিং সিস্টেমে?
স্টিফেন সি

4

হিপ আকারটি 6 গিগাবাইটে পরিবর্তন করতে দয়া করে নীচের কমান্ডটি ব্যবহার করুন

export JAVA_OPTS="-Xms6144m -Xmx6144m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"

আমার সিস্টেমে যদি আমার 8 জি মেমরি থাকে এবং আমি টাস্ক ম্যানেজারের কাছ থেকে দেখতে পাই যে এর 70% ব্যবহার রয়েছে; জাভা হিপ আকারে 6 জি মেমরি বরাদ্দ করা কি সম্ভব?
রেহান_ম্ন

1
@ রিহান_এমন হ্যাঁ এবং না, আপনি যদি আপনার স্মৃতিশক্তি অতিক্রম করেন তবে এটি পেজিংয়ে যাবে, যা ডিস্কে রয়েছে এবং অবিশ্বাস্যরূপে ধীর গতিতে রয়েছে। আপনি যদি পৃষ্ঠা ফাইলগুলি অতিক্রম করে থাকেন তবে আপনি খারাপ সময়ের জন্য রয়েছেন।
কোডমনেকি

2

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

এই সমস্যার জন্য, jvm বিকল্পগুলির মতো কিছু -Xms2g -Xmx6g -Xss8mসমাধান হতে পারে।

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


2

এটি কেবল জাভার 64 বিট সংস্করণে কাজ করে। কন্ট্রোল প্যানেলে যান এবং জাভা আইকনে ক্লিক করুন। জাভা কন্ট্রোল প্যানেলের ছোট উইন্ডোতে জাভা মেনু বারে ক্লিক করুন এবং তারপরে viewবোতামটি ক্লিক করুন ।

আপনার যদি দুটি জাভা প্ল্যাটফর্ম থাকে তবে জাভার আগের সংস্করণটি অক্ষম করুন, তারপরে রানটাইম পরামিতিগুলির পাঠ্য ক্ষেত্রে ক্লিক করুন এবং -Xmx1024mর্যাম আকারের চেয়ে কম লিখুন । র‍্যামের সমান হিপ আকারটি বাড়িয়ে তুলবেন না অন্যথায় আপনার সিস্টেমটি ক্রাশ হয়ে যাবে।


আপনি যদি গাদা আকারটিকে র‌্যামের সমান করেন তবে সিস্টেমটি ক্রাশ হবে না। পরিবর্তে, সিস্টেমটি পেজিং শুরু করবে এবং সুন্দর এবং ধীর পাবে।
ডেভ দ্যমিনিয়ন

0

হ্যাঁ. আপনি পারেন।

আপনি আপনার হিপ মেমরির দৈহিক মেমরির 75% (6 গিগাবাইট হিপ) বা ততোধিক করে তুলতে পারেন।

যেহেতু আপনি 64 বিট ব্যবহার করছেন আপনি নিজের গাদা আকারটি আপনার পছন্দসই পরিমাণে বাড়িয়ে নিতে পারেন। আপনি যদি 32 বিট ব্যবহার করছেন তবে এটি 4 জিবিতে সীমাবদ্ধ।

$ java -Xms512m -Xmx6144m JavaApplication

আপনাকে প্রাথমিক হিপ আকারটি 512 মিমি এবং সর্বাধিক হ্যাপসাইজ 6 জিবিতে সেট করে।

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


এটি কয়েক বছর আগে পোস্ট করা দুটি শীর্ষ ভোটের জবাবের সাথে খুব মিল বলে মনে হচ্ছে।
বার্নহার্ড বার্কার

0

অপ্রতুল জেভিএম হিপ মেমরির কারণে পাইএক্সেপশন পেতে, আমার জাভা কোডে পিআই ফাইলগুলি চালানোর ক্ষেত্রে আমার সমস্যা আছে। আমি নীচে বর্ণিত পরিবর্তনগুলি করেছি এবং আমি এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি। নীচে আমার সিস্টেম কনফিগারেশন রয়েছে।

এখানে চিত্র বর্ণনা লিখুন

এবং এই পরিবর্তনগুলি আমি আমার কর্মক্ষেত্র এবং ভয়েলাতে করেছি এটি এখন নিখুঁত runs

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

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