মেমরি নিবিড় অ্যাপ্লিকেশনগুলির জন্য JVM সর্বাধিক গাদা আকার বাড়ানো


88

আমার একটি জাভা মেমরি নিবিড় অ্যাপ্লিকেশন চালানো দরকার যা 2 গিগাবাইটের বেশি ব্যবহার করে তবে হিপ সর্বাধিক আকার বাড়াতে আমার সমস্যা হচ্ছে। এখনও অবধি, আমি নিম্নলিখিত পদ্ধতির চেষ্টা করেছি:

  • -Xmx প্যারামিটার সেট করা হচ্ছে, যেমন -Xmx3000m। এটি জেভিএম তৈরিতে ব্যর্থ হয়। আমি যেটা গুগল করেছি তা থেকে দেখে মনে হচ্ছে -এক্সএমএক্স 2 জিবি এর চেয়ে কম হওয়া উচিত।

  • -XX: + আগ্রাসীহ্যাপ বিকল্পটি ব্যবহার করে । আমি যখন এই পদ্ধতির চেষ্টা করি তখন আমি একটি 'পর্যাপ্ত মেমোরি নয়' ত্রুটি পাই যা আমার কম্পিউটারে 8 গিগাবাইট মেমরির সত্ত্বেও, গাদা আকারটি 1273.4 মেগাবাইট বলে দেয়।

আমি কি আরও কিছু পন্থা যা জেভিএমের সর্বাধিক স্তরের আকার বাড়ানোর চেষ্টা করতে পারি? এখানে কম্পিউটারের চশমার সংক্ষিপ্তসার রয়েছে:

  • ওএস: উইন্ডোজ 7 (bit৪ বিট)
  • প্রসেসর: ইন্টেল কোর আই 7 (2.66 গিগাহার্টজ)
  • স্মৃতি: 8 জিবি
  • জাভা-রূপান্তর:
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)

7
বিটিডাব্লু: সর্বনিম্ন এবং সর্বাধিক মেমরির আকার এখন স্ট্যান্ডার্ড বিকল্প। আপনি -xms এবং -xmx এর পরিবর্তে -ms এবং -mx ব্যবহার করতে পারেন। -এক্স?? অ-মানক বিকল্পগুলির জন্য সংরক্ষিত।
পিটার লরি

4
স্ট্যান্ডার্ড কোন JVM জন্য? তারা এখনও হটস্পট জেভিএমের (1.8 হিসাবে) মানহীন। ডকস.ওরাকল.com
হাকল

-mx এবং -ms বিদ্যমান এবং কাজ করে, তবে আমি এটি অফিসিয়াল জাভা ডকুমেন্টেশনে খুঁজে পাই না @ পিটারলাউরে> আপনি কি ডকুমেন্টেশনের লিঙ্ক যুক্ত করতে পারেন? ধন্যবাদ
মিশাল বার্নহার্ড

4
@ মিচালবার্নহার্ড এটি জাভা ১.১ এর সাথে পিছনে সামঞ্জস্যপূর্ণ। আমি এটি দেখতে পেয়েছি যে এটি সংস্করণটির জন্য নথিভুক্ত তবে এখন এটি পাওয়া খুব কঠিন। ;)
পিটার লরে

4
একটি ব্যাখ্যা জন্য @ পিটারলাউরে ধন্যবাদ। তবে আপনি যখন এটি এখন স্ট্যান্ডার্ড বলছেন তখন আপনি বোঝাচ্ছেন যে এটি জাভা ১.১ থেকে মান (তবে পরবর্তী সংস্করণগুলিতে নথি নয়)? অদ্ভুত বলে মনে হচ্ছে :) বিটিডব্লিউ আমি জাভা ১.১ ডকুমেন্টেশনের লিঙ্কটি পেয়েছি এবং আপনি ঠিক বলেছেন: ad.ntust.edu.tw/course/ad5601701/jmdl/docs/java/tooldocs/win32/…
মিশাল বার্নহার্ড

উত্তর:



96

আপনি যখন 32-বিট মোডে জেভিএম ব্যবহার করছেন, সর্বাধিক হ্যাপের আকার যা বরাদ্দ করা যায় তা 1280 এমবি। সুতরাং, আপনি যদি এর বাইরে যেতে চান তবে আপনাকে জেভিএমকে 64-মোডে প্রার্থনা করতে হবে।

আপনি নিম্নলিখিত ব্যবহার করতে পারেন:

$ java -d64 -Xms512m -Xmx4g HelloWorld

কোথায়,

  • -d64: 64-বিট জেভিএম সক্ষম করবে
  • -Xms512 মি: প্রাথমিক স্তূপ আকার 512 এমবি হিসাবে সেট করবে
  • -এক্সএমএক্স 4 জি: সর্বোচ্চ গাদা আকার 4 জিবি হিসাবে সেট করবে

আপনার প্রয়োজন অনুসারে আপনি XX এবং XXX এ টিউন করতে পারেন (ওয়াইএমএমভি)

জেভিএম কর্মক্ষমতা টিউনিং ওপর খুব ভাল রিসোর্স, যা দেখতে চাই পারে: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html


আমার জেভিএম 32-বিট এবং সর্বোচ্চ -Xmx1024M এর অনুমতি দেয় allows এছাড়াও 64 বিট সংস্করণ চেষ্টা করতে যাচ্ছি।
কিলটেক

আমি JVM 64৪-বিট চেষ্টা করেছি এবং এটি পুরোপুরি কার্যকর হয়েছে। আমি এখন সর্বোচ্চ হিপ আকারের 4096 এমবি সেট করতে পারি। আপনার 32 এবং 64 বিট উভয়ই ইনস্টল থাকা অবস্থায় অন্তত উইন্ডোজে আপনার অ্যাপ্লিকেশনগুলির জন্য জাভা পাথটি নতুন 64 বিট সংস্করণ ইনস্টল করা উচিত to অন্যথায়, ত্রুটিটি অব্যাহত থাকবে। উইন্ডোজে এটি প্রায়শই সিস্টেমের পরিবেশগত ভেরিয়েবলগুলিতে জাভা পাথ পরিবর্তন করে করা যায়।
ফাবিয়ানো 23

আমি অনুমান করি সর্বাধিক গাদা জন্য সীমা 1280 নয়, তবে 1700MB এর কাছাকাছি কিছু। আমি আমার 32 বিট জেভিএম ইনস্টলেশনতে 1600MB সর্বাধিক হিপ ব্যবহার করেছি এবং এটি দুর্দান্ত কাজ করেছে।
ফাবিয়ানো 23

আপনার আদেশে হ্যালো ওয়ার্ল্ড যুক্তি কী? আমি লিনাক্সে জাভা-জার মাইএপ.জার কমান্ড দিয়ে শুরু হওয়া জাভা প্রক্রিয়া সর্বাধিক সেট করতে চাইলে আমি এই আদেশটি কীভাবে ব্যবহার করতে পারি?
লর্ডস্কোন

হাই, আমি জিজ্ঞাসা করতে পারি যে আমি সর্বোচ্চ জাভা হ্যাপের আকারটি সেট করতে পারি? আমি যখন অ্যাপ্লিকেশনটি চালিত করি তখন আমার মেশিনে ডিফল্ট-এক্সএমএক্স 4 জিবি হয় তবে আমি কি এটি 4 জিবি-র চেয়ে বেশি সেট করতে পারি?
ওক

14

আমি বিশ্বাস করি 2 জিবি সীমা 32-বিট জাভার জন্য। আমি ভেবেছিলাম v1.6 সর্বদা bit৪ বিট, তবে see৪ বিট মোডটি জোর করে দেখার চেষ্টা করুন: -d64 বিকল্পটি যুক্ত করুন।


-D64 বিকল্পটি কার্যকর হয়নি, গ্রেগস প্রস্তাবিত হিসাবে আমি 64-বিট জেভিএম ব্যবহার করার চেষ্টা করব এবং ফলাফলগুলি প্রতিবেদন করব।
আলসু কোস্টা

4
-D64 এবং -d32 স্যুইচগুলি কেবল সোলারিসের উপর সঠিকভাবে কাজ করে (কমপক্ষে এই ডকুমেন্টেশন অনুসারে): java.sun.com/docs/hotspot/HotSpotFAQ.html#64bit_layering
লুকাসজ স্টেলমাচ

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

@ লুকাস্জ -d64 এবং -d32 অ্যাপলের জেভিএম-তেও কাজ করবে বলে মনে হচ্ছে। তবে সেই দস্তাবেজটি বোঝায় যে তারা সনের উইন্ডোজ এবং লিনাক্স জেভিএম-এর জন্য অ-কার্যক্ষম।
G__

8

32-বিট জাভা প্রায় 1.4 থেকে 1.6 জিবি সীমাবদ্ধ।

ওরাকল 32 বিট হিপ এফএকিউ

উদ্ধৃতি

32-বিট জেভিএমের সর্বাধিক তাত্ত্বিক হিপ সীমা 4 জি। বিভিন্ন অতিরিক্ত বাধা যেমন উপলব্ধ অদলবদল, কার্নেল ঠিকানার জায়গার ব্যবহার, মেমরি ফ্র্যাগমেন্টেশন এবং ভিএম ওভারহেডের কারণে অনুশীলনে সীমাটি অনেক কম হতে পারে। বেশিরভাগ আধুনিক 32-বিট উইন্ডোজ সিস্টেমে সর্বাধিক হ্যাপের আকার 1.4G থেকে 1.6G অবধি হবে। 32-বিট সোলারিস কার্নেলগুলিতে ঠিকানার স্থান 2 জি-তে সীমাবদ্ধ। 32-বিট ভিএম চলমান 64৪-বিট অপারেটিং সিস্টেমগুলিতে, সোলারিস সিস্টেমে সর্বাধিক হ্যাপের আকার 4G এর কাছাকাছি হতে পারে।


4

কনফের নীচে আমার জন্য কাজ করে:

JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/
PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH
export PATH
export JAVA_HOME

JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server"

/JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.