চলমান জেভিএমের পরামিতিগুলি পাওয়া


90

কোন চলমান জেভিএমের পরামিতিগুলি পাওয়ার কোনও উপায় আছে? Jstat এর মতো কোনও কমান্ড লাইনের সরঞ্জাম আছে যা JVM এর পিডকে ইনপুট হিসাবে গ্রহণ করে এবং এর শুরু পরামিতিগুলি ফেরত দেয়? আমি জেভিএম শুরু করার সময় প্রদত্ত -Xmx এবং -Xms মানগুলিতে বিশেষভাবে আগ্রহী am ধন্যবাদ.

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

সম্পাদনা : আমরা jvisualvm ব্যবহার করে পরামিতিগুলি পাওয়ার চেষ্টা করেছি। তবে একটি দূরবর্তী জেভিএমের সাথে সংযোগ স্থাপনের জন্য, আমাদের জেএসটিডিটি চালাতে হবে এবং জেভিএমের সুরক্ষা সেটিংস সংশোধন করতে হবে, যা আমরা একটি প্রোডাকশন সার্ভারে খুব বিঘ্নিত এবং ঝুঁকিপূর্ণ বলে মনে করেছি।


আপনি সেখানে একটি সরঞ্জাম খুঁজে পেতে পারেন: জেডি কে সরঞ্জাম এবং ইউটিলিটিস
গিলাইম হুস্টা

উত্তর:


145

আপনি jps ব্যবহার করতে পারেন

jps -lvm

কিছু মুদ্রণ

4050 com.intellij.idea.Main -Xms128m -Xmx512m -XX:MaxPermSize=250m -ea -Xbootclasspath/a:../lib/boot.jar -Djb.restart.code=88
4667 sun.tools.jps.Jps -lvm -Dapplication.home=/opt/java/jdk1.6.0_22 -Xms8m

6
একটি যাদুমন্ত্র মত কাজ করে. আমি জেডিকে জিনফো সরঞ্জামটিও আবিষ্কার করেছি যা একই ধরণের ফাংশন রয়েছে
এইচ এইচ

4
লক্ষ্য করুন যে আউটপুটটি jps -lvmবিভ্রান্তিকর হতে পারে। জিনফো বা অন্যান্য সরঞ্জামের সাথে সর্বদা ডাবল চেক করুন। সমস্যাটি হতে পারে যদি "-XX "টিকে সাধারণ প্রোগ্রাম আর্গুমেন্টের মতো পাস করা হয় এবং জেভিএম দ্বারা উপেক্ষা করা হয়। আপনি যদি java -jar my.jar -Xmx3gপরিবর্তে ব্যবহার করেন তবে java -Xmx3g -jar my.jar
কেসটি

36

আমি এই নতুন উত্তরটি যুক্ত করছি কারণ জেডিকে 8 অনুসারে ডকুমেন্টেশন জেসিএমডি এখনই পদ্ধতির প্রস্তাব দেওয়া হচ্ছে।

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

নীচে আপনার পছন্দসই সম্পত্তি / পতাকা পেতে আদেশগুলি রয়েছে।

jcmd pid VM.system_properties
jcmd pid VM.flags

নীচে যেমন jcmd -l ব্যবহারের জন্য আমাদের পিড লাগবে d

username@users-Air:~/javacode$ jcmd -l 
11441 Test 
6294 Test 
29197 jdk.jcmd/sun.tools.jcmd.JCmd -l 

আপনার পছন্দের বৈশিষ্ট্য / পতাকা পেতে এখন এই পিডগুলি ব্যবহার করার সময়

আদেশ: জে সিএমডি 11441 ভিএম.সিস্টেম_প্রোপার্টি ties

11441:
#Tue Oct 17 12:44:50 IST 2017
gopherProxySet=false
awt.toolkit=sun.lwawt.macosx.LWCToolkit
file.encoding.pkg=sun.io
java.specification.version=9
sun.cpu.isalist=
sun.jnu.encoding=UTF-8
java.class.path=.
java.vm.vendor=Oracle Corporation
sun.arch.data.model=64
java.vendor.url=http\://java.oracle.com/
user.timezone=Asia/Kolkata
java.vm.specification.version=9
os.name=Mac OS X
sun.java.launcher=SUN_STANDARD
user.country=US
sun.boot.library.path=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/lib
sun.java.command=Test
http.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
jdk.debug=release
sun.cpu.endian=little
user.home=/Users/XXXX
user.language=en
java.specification.vendor=Oracle Corporation
java.home=/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
file.separator=/
java.vm.compressedOopsMode=Zero based
line.separator=\n
java.specification.name=Java Platform API Specification
java.vm.specification.vendor=Oracle Corporation
java.awt.graphicsenv=sun.awt.CGraphicsEnvironment
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
ftp.nonProxyHosts=local|*.local|169.254/16|*.169.254/16
java.runtime.version=9+181
user.name=XXXX
path.separator=\:
os.version=10.12.6
java.runtime.name=Java(TM) SE Runtime Environment
file.encoding=UTF-8
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
java.vendor.url.bug=http\://bugreport.java.com/bugreport/
java.io.tmpdir=/var/folders/dm/gd6lc90d0hg220lzw_m7krr00000gn/T/
java.version=9
user.dir=/Users/XXXX/javacode
os.arch=x86_64
java.vm.specification.name=Java Virtual Machine Specification
java.awt.printerjob=sun.lwawt.macosx.CPrinterJob
sun.os.patch.level=unknown
MyParam=2
java.library.path=/Users/XXXX/Library/Java/Extensions\:/Library/Java/Extensions\:/Network/Library/Java/Extensions\:/System/Library/Java/Extensions\:/usr/lib/java\:.
java.vm.info=mixed mode
java.vendor=Oracle Corporation
java.vm.version=9+181
sun.io.unicode.encoding=UnicodeBig
java.class.version=53.0
socksNonProxyHosts=local|*.local|169.254/16|*.169.254/16

কমান্ড: জেএমসিডি 11441 ভিএম.ফ্লেগস আউটপুট:

11441:
-XX:CICompilerCount=3 -XX:ConcGCThreads=1 -XX:G1ConcRefinementThreads=4 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=67108864 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=643825664 -XX:MinHeapDeltaBytes=1048576 -XX:NonNMethodCodeHeapSize=5830092 -XX:NonProfiledCodeHeapSize=122914074 -XX:ProfiledCodeHeapSize=122914074 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:-UseAOT -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC 

জেসিএমডি ব্যবহারের আরও নির্দেশাবলীর জন্য, আমার ব্লগ পোস্টটি দেখুন


কোনও মিলের প্রক্রিয়া খুঁজে পাওয়া যায়নি: 'পিড'
সিএফ ভাস

4
পিডিটি জাভা প্রসেস আইডি দিয়ে প্রতিস্থাপন করা উচিত, লিনাক্স ওএস সাধারণত আমরা এটি "পিএস-শেফ | গ্রেপ জেডিকে ”, আপনি যদি এর মাধ্যমে একাধিক প্রক্রিয়া দেখতে পান তবে একটি নতুন প্রশ্ন জিজ্ঞাসা করুন বা এটি গুগল করার চেষ্টা করুন
ভিপিন


21

বিকল্পভাবে, আপনি জিনফো ব্যবহার করতে পারেন

jinfo -flags <vmid> 
jinfo -sysprops <vmid>

4
এই ইউটিলিটিটি অসমর্থিত এবং জেডিকে-র ভবিষ্যতের সংস্করণগুলিতে উপলভ্য বা নাও থাকতে পারে।
GoYun.Info

-flagsওপেনজেডকে 64-বিট সার্ভার ভিএম (1.8.0_111-অভ্যন্তরীণ-আল্পাইন-r0-বি 14 নির্মাণ করুন) (বর্তমান java:8u111-jdk-alpineডকার চিত্র)
অ্যান্টনি ও

আমি এই উত্তরটি জাভা 6/7 মাথায় রেখে লিখেছি। এর বাইরে জিনফো অবিশ্বাস্য, তবে flagsডিবিয়ান জেসির উপর ভিত্তি করে অফিসিয়াল ডকার জাভা ইমেজের সাথে কাজ করে docker run --rm -it java:8u111-jdk java -version && jinfo -h
জারেক প্রাইজিডজকি

15

আপনি যদি জাভাতে এটি করতে পারেন তবে চেষ্টা করুন:

রানটাইমএমএক্সবিয়ান

ম্যানেজমেন্টফ্যাক্টরি

উদাহরণ:

RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
List<String> jvmArgs = runtimeMXBean.getInputArguments();
for (String arg : jvmArgs) {
    System.out.println(arg);
}

4
এটি পাস করা হলে কেবল মান সরবরাহ করবে, সুতরাং কোনও ডিফল্ট সেটিংস নেই।
বেহেহে

8

জে কনসোল এটি করতে পারে। এছাড়াও আপনি একটি শক্তিশালী jvisualVM সরঞ্জাম ব্যবহার করতে পারেন, এটি 1.6.0.8 থেকে জেডিকে অন্তর্ভুক্ত।


3

লিনাক্সে, আপনি এই আদেশটি চালাতে পারেন এবং ফলাফলটি দেখতে পারেন:

ps aux | grep "java"

আমার সংস্থা রেড হ্যাট লিনাক্স ব্যবহার করে এবং সিস্টেমে আমার খুব সীমাবদ্ধ রয়েছে। পিএস অক্স | গ্রেপ "জাভা" কমান্ডটি সমস্ত জাভা কমান্ডগুলি তাদের jvm আর্গুমেন্টের সাথে তালিকাভুক্ত করে এবং প্রয়োজনে আমরা সঠিক jvm যুক্তিটি গ্রেপও করতে পারি। অন্য কোনও সরঞ্জাম যেমন জেপিএস, জেএমসিডি ইত্যাদি উপলভ্য / অ্যাক্সেসযোগ্য না হলে এটি সত্যিই দরকারী।
আগান

1

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


1

যদি আপনি চলমান জাভা প্রক্রিয়াটির JVM পরামিতিগুলি পেতে আগ্রহী হন তবে কেবল -3 জাভা-পিডকে হত্যা করুন kill আপনি একটি কোর ডাম্প ফাইল পাবেন যাতে আপনি জাভা অ্যাপ্লিকেশন চালু করার সময় ব্যবহৃত jvm পরামিতিগুলি খুঁজে পেতে পারেন।


0

সেই তথ্য অ্যাক্সেস করতে আপনি JConsole কমান্ড (বা অন্য কোনও জেএমএক্স ক্লায়েন্ট) ব্যবহার করতে পারেন।


0

এই কৌশলটি স্থানীয় বা দূরবর্তী কোনও চলমান জাভা অ্যাপ্লিকেশনের জন্য প্রযোজ্য।

  1. আপনার জাভা অ্যাপ্লিকেশন শুরু করুন।
  2. আপনার মধ্যে জেডিকে পাওয়া জেভিসুয়ালভিএম চালান (যেমন সি: \ প্রোগ্রাম ফাইলগুলি জাভা \ jdk1.8.0_05 \ বিন \ jvisualvm.exe)।
  3. যখন এই দরকারী সরঞ্জামটি "লোকাল" ট্রি নোডের নীচে চলমান জাভা অ্যাপ্লিকেশনগুলির তালিকাটি দেখুন।
  4. [আপনার অ্যাপ্লিকেশন] (পিড [এন]) ডাবল ক্লিক করুন।
  5. ডানদিকে অ্যাপ্লিকেশনটির জন্য ট্যাবে পরিদর্শন সামগ্রী থাকবে। ওভারভিউ ট্যাবের মাঝখানে আপনি আবেদনের জন্য জেভিএম আর্গুমেন্ট দেখতে পাবেন।

Jvisualvm যে কোনও জেডিকে-তে পাওয়া যাবে যেহেতু জেডিকে Update আপডেট 7.. jvisualvm এর ভিডিও টিউটোরিয়ালটি এখানে রয়েছে।


ওপি স্পষ্টতই বলেছিল যে jvisualvm কোনও বিকল্প ছিল না।
অলিভিয়ার গারার্ডিন

0

_JAVA_OPTIONS হ'ল একটি env পরিবর্তনশীল যা প্রসারিত হতে পারে।

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