_জেএভিএ_ওপিটিশনস, জাভাআলএপিএল_অপশন এবং জাএভিএওপিটিএসের মধ্যে পার্থক্য


151

আমি ভেবেছিলাম _JAVA_OPTIONSএবং এর মধ্যে একটি তুলনা করা দুর্দান্ত হবেJAVA_TOOL_OPTIONS । আমি একটির জন্য কিছুটা অনুসন্ধান করেছিলাম, তবে আমি কিছুই খুঁজে পাচ্ছি না, তাই আমি আশা করি আমরা স্ট্যাকওভারফ্লোতে এখানে জ্ঞানটি খুঁজে পেতে পারি।

JAVA_OPTSসম্পূর্ণতার জন্য অন্তর্ভুক্ত করা হয়। এটি জেভিএমের অংশ নয়, তবে বন্যের মধ্যে এটি নিয়ে প্রচুর প্রশ্ন রয়েছে।

আমি যা জানি:

এখনও অবধি আমি এটি জানতে পেরেছি:

  • JAVA_OPTSজেডিকে দ্বারা ব্যবহৃত হয় না, তবে অন্যান্য অ্যাপ্লিকেশনগুলির একটি গুচ্ছ দ্বারা ( এই পোস্টটি দেখুন )।
  • JAVA_TOOL_OPTIONS এবং _JAVA_OPTIONS হ'ল কমান্ড লাইন প্যারামিটারের পরিবর্তে পরিবেশগত পরিবর্তনশীল হিসাবে JVM টি আর্গুমেন্ট নির্দিষ্ট করার উপায়।
    • কমপক্ষে তাদের নেওয়া হয় java এবংjavac
    • তাদের এই নজির রয়েছে:
      1. _JAVA_OPTIONS (অন্যদের ওভাররাইট করে)
      2. কমান্ড লাইন পরামিতি
      3. JAVA_TOOL_OPTIONS (অন্যদের দ্বারা ওভাররাইট করা হয়)

আমি জানতে চাই কি

  • তুলনা করে কোনও অফিসিয়াল ডকুমেন্টেশন রয়েছে JAVA_TOOL_OPTIONSএবং_JAVA_OPTIONS
  • এর মধ্যে JAVA_TOOL_OPTIONSএবং _JAVA_OPTIONS(অগ্রাধিকার ব্যতীত) অন্য কোনও পার্থক্য রয়েছে কি ?
  • কোন এক্সিকিউটেবলগুলি বাছাই করে JAVA_TOOL_OPTIONSএবং _JAVA_OPTIONS(পাশাপাশি javaএবং javac)
  • কি অন্তর্ভুক্ত করা যেতে পারে কোন সীমাবদ্ধতা JAVA_TOOL_OPTIONSএবং_JAVA_OPTIONS

অফিসিয়াল ডকুমেন্টেশন

আমি সম্পর্কে কোন ডকুমেন্টেশন সন্ধান করতে সক্ষম হয় নি _JAVA_OPTIONSএর জন্য ডকুমেন্টেশনগুলিJAVA_TOOL_OPTIONS পার্থক্যের বিষয়ে খুব বেশি আলোকপাত করে না:

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

উদাহরণ স্ক্রিপ্ট

এই কোডটি আমি এটি বের করতে ব্যবহার করেছি। কনসোল আউটপুট মন্তব্য হিসাবে অন্তর্ভুক্ত করা হয়েছে:

export JAVA_OPTS=foobar
export JAVA_TOOL_OPTIONS= 
export _JAVA_OPTIONS="-Xmx512m -Xms64m"

java -version                          
# Picked up JAVA_TOOL_OPTIONS: 
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# java version "1.7.0_40"
OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)

javac -version
# Picked up JAVA_TOOL_OPTIONS: 
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40

export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40

export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m"
export _JAVA_OPTIONS="-Xmx1 -Xms1"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap

export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS=
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS: 
# java version "1.7.0_40"
# OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
# OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)

export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx1 -Xms1"
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS: 
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap

2
সম্পর্কিত: stackoverflow.com/questions/17781405/...

3
যেহেতু JDK 9+ , সেখানে JDK_JAVA_OPTIONSপছন্দের পরিবর্তে দেখুন stackoverflow.com/q/52986487/537554
ryenus

উত্তর:


62

আপনি লাইব্রেরি কলের মাধ্যমে জেভিএম ইন-প্রসেস শুরু করলেও এই বিকল্পগুলি বেছে নেওয়া ব্যতীত আপনি বেশ কিছুটা পেরে গিয়েছেন।

_JAVA_OPTIONSডকুমেন্টেড নয় এমন ঘটনাটি থেকে বোঝা যায় যে এই পরিবর্তনশীলটি ব্যবহার করার পরামর্শ দেওয়া হয় না এবং আমি আসলে লোকেরা এটিতে সেট করে এটির অপব্যবহার দেখেছি ~/.bashrc। তবে আপনি যদি এই সমস্যার তলদেশে যেতে চান তবে আপনি ওরাকল হটস্পট ভিএম (যেমন ওপেনজেডিকে 7 তে ) এর উত্স পরীক্ষা করতে পারেন ।

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

আপডেট 2015-08-04: অনুসন্ধান ইঞ্জিন থেকে আগত লোকদের জন্য পাঁচ মিনিট বাঁচাতে, _JAVA_OPTIONSকমান্ড-লাইন আর্গুমেন্টগুলি ট্রাম্প করে, যা ট্রাম্পে পরিণত হয় JAVA_TOOL_OPTIONS


36

আরও একটি পার্থক্য রয়েছে: _JAVA_OPTIONSএটি ওরাকল নির্দিষ্ট। IBM_JAVA_OPTIONSপরিবর্তে আইবিএম জেভিএম ব্যবহার করছে । এটি সম্ভবত সংঘর্ষ ছাড়াই মেশিন-নির্দিষ্ট বিকল্পগুলি সংজ্ঞায়িত করতে সক্ষম হওয়ার জন্য করা হয়েছিল। JAVA_TOOL_OPTIONSসমস্ত ভিএম দ্বারা স্বীকৃত।


21

JAVA_OPTSআছে কোন বিশেষ হ্যান্ডলিং এ সব জেভিএম হবে।

আর অনুযায়ী https://bugs.openjdk.java.net/browse/JDK-4971166JAVA_TOOL_OPTIONS , ভাল উদ্ধৃত স্পেস হ্যান্ডলিং না এবং সবসময় অনথিভুক্ত হটস্পট-নির্দিষ্ট পরিবর্তে পছন্দসই হবে মান JVMTI স্পেসিফিকেশন মধ্যে অন্তর্ভুক্ত করা হয় _JAVA_OPTIONS

এছাড়াও সাবধান থাকুন যে স্ট্যান্ডআউটে অতিরিক্ত বার্তাগুলি মুদ্রণ করা যায় যা দমন করা যায় না


@ রেনিয়াস যেমন উল্লেখ করেছেন যে, জেডিকে ৯++, পছন্দসই প্রতিস্থাপন হিসাবে জেডিকে_জেএভিএ_অফটিশন আছে, দেখুন জাভা ১১ ব্যবহার করার সময় জেডিকে_জাভা_অপশন এবং জাভাফল_অপশনগুলির মধ্যে পার্থক্য কী?

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