লিনাক্সে, জাভা অ্যাপ্লিকেশনের জন্য শীর্ষ কমান্ড আউটপুটতে ডাটা কী?


1

আমার লিনাক্স প্ল্যাটফর্মের উপর একটি JBoss অ্যাপ্লিকেশন চলছে, এটির মতো নিম্ন আউটপুট রয়েছে (আসলে সঠিক তথ্য নয়):

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM  CODE DATA TIME+  COMMAND
 1379 root      16   0  9.7g 1.6g 1980 S  0.7  1.3 36  9.7g 0:11.03 java

এটি 1.6 জি শারীরিক মেমরি সম্পূর্ণরূপে আছে, এবং 9.7 জি ডাটা অংশ আছে। প্রকৃতপক্ষে হিপ আকারটি ~ 128 মিমি JVM এর সাথে কনফিগার করা। আমার প্রশ্নটি জাভা অ্যাপ্লিকেশনের জন্য সংরক্ষণ করা ডেটা অংশ কি? কোন সুত্র? এবং কিভাবে আমি এটা অপ্টিমাইজ করতে পারে?

ধন্যবাদ, Emre


আপনি নিজে নিজে এটি করতে পারবেন না, কিন্তু একবার পাঁচজন ব্যক্তি এটি স্থানান্তরিত হওয়ার জন্য ভোট দিলে এটি স্বয়ংক্রিয়ভাবে (আরো বা কম) ঘটবে। অন্যথায়, যে ফোরাম জন্য নিবন্ধন এবং সেখানে পুনরায় পোস্ট।
Aleks G

উত্তর:


1

DATA ব্যবহার করে অ্যাপ্লিকেশন দ্বারা বরাদ্দ মেমরি মানে brk(2) - যেমন ডেটা সেগমেন্ট প্রসারিত।

জাভাতে বিভিন্ন জিনিস রয়েছে যা এটি ডাটা সেগমেন্টে রাখবে:

  • হিপ
  • কোনও মেমরি স্থানীয় রানটাইম স্তর দ্বারা বরাদ্দ (কোড ব্যবহার করে native শব্দ)
  • DLNA / JNI / JNA ব্যবহার করে আপনি জাভা থেকে লোড করা শেয়ারকৃত লাইব্রেরিগুলি দ্বারা বরাদ্দ কোন মেমরি
  • মেমরি যেখানে বাইটি কোড লোড, ব্যাখ্যা এবং JIT দ্বারা সংকলিত (কোড ক্যাশে)
  • জিসি এবং অন্যান্য রানটাইম সমর্থন কোড দ্বারা ব্যবহৃত মেমরি কাঠামো
  • স্ট্যাক

মনে রাখবেন যে প্রোগ্রামটি 128MB হ্যাপের চেয়ে বেশি বরাদ্দ করা হবে কারণ জাভা হিপ পরিচালনা করার জন্য কিছু কাঠামো তৈরি করবে যা এটির অংশ নয়। তাই 128MB এর মানে আপনার 128MB থাকবে যার মধ্যে আপনি জাভা অবজেক্ট বরাদ্দ করতে পারবেন।


আপনার বিস্তারিত তথ্যের জন্য ধন্যবাদ হারুন! সুতরাং আপনি ডেটা অংশ (শীর্ষ আউটপুট দ্বারা) প্রায় সব জাভা অ্যাপ্লিকেশন প্রয়োজন মেমরি স্থান অন্তর্ভুক্ত করা হবে? হিপ অন্তর্ভুক্ত, স্ট্যাক এবং বহিস্থিত লোড লাইব্রেরি। এবং আপনি ভিতরে তথ্য বিশ্লেষণ বিশ্লেষণ সরঞ্জাম আছে? আমি মনে করি JPRofiler বা JProbe শুধুমাত্র হিপ অংশ বিশ্লেষণ করবে, এটা সহায়ক হবে না, অধিকার?
Emre He

আমি এমন একটি সরঞ্জাম সম্পর্কে সচেতন নই যা আরও বিশ্লেষণ করতে পারে তবে আমি এলাকার একজন বিশেষজ্ঞ নই। আমি আপনাকে একটি নতুন, আরো নির্দিষ্ট প্রশ্ন জিজ্ঞাসা করার মত "আমার অ্যাপ্লিকেশন 128 মেগাবাইট হিপ আছে কিন্তু 1.6 গিগাবাইট বাস্তব RAM ব্যবহার করে। 1.4 গিগাবাইট কোথায় যেতে পারে তা আমি জানতে পারি?"
Aaron Digulla

অবশেষে আমরা এটি JNI দ্বারা .so ফাইল লোড হওয়ার কারণে এটি পাওয়া যায়, এটি আরও স্মৃতি নেয়। আপনার সাহায্যের জন্য ধন্যবাদ.
Emre He

0

এটি অ্যাক্সেসযোগ্য কোড ছাড়া অন্যের কাছে ভৌত মেমরির পরিমাণ যা 'ডেটা রেসিডেন্ট সেট' আকার বা DRS নামেও পরিচিত। সাধারণত, আপনি একটি ম্যানুয়াল পৃষ্ঠা উল্লেখ করতে পারেন যা বিশদগুলিতে সমস্ত কলাম বর্ণনা করে। একটি ম্যানুয়াল পৃষ্ঠা পেতে, টাইপ করুন man top


ধন্যবাদ প্রথমত। আমি শীর্ষ ম্যানুয়াল থেকে "ডাটা - ডেটা + স্ট্যাক আকার (কেবি)" হিসাবে দেখতে পাচ্ছি, আমি বলতে চাচ্ছি এই ডেটা মানে কী? সম্ভবত এটা জাভা স্ট্যাটিক ভেরিয়েবল বা স্ট্রিং সংজ্ঞা অনুযায়ী?
Emre He
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.