الفرق بين وضع عميل JVM ووضع الخادم
الفرق الرئيسي بين وضع خادم JVM ووضع العميل هو أنه عند البدء: - يكون وضع الخادم بطيئًا عند البدء ، ولكن بمجرد بدء تشغيله ، سيتم تحسين الأداء بشكل كبير.
يمكن لـ JVM تحسين الأداء بشكل كبير عند العمل في وضع الخادم. ستكون سرعة بدء التشغيل للتطبيقات في وضع الخادم أبطأ بنسبة 10 ٪ من وضع العميل ، ولكن سرعة التشغيل أسرع 10 مرات على الأقل من العميل VM.
عندما لا يتم تحديد معلمات وضع التشغيل ، يبدأ الجهاز الظاهري في اكتشاف ما إذا كان المضيف خادمًا. إذا كان الأمر كذلك ، فسيبدأ في وضع الخادم. خلاف ذلك ، سيبدأ في وضع العميل. أساس اكتشاف J2SE5.0 هو على الأقل 2 وحدات المعالجة المركزية وحد أدنى من الذاكرة 2 جيجابايت.
نظرًا لأن وحدة المعالجة المركزية للخادم ، فإن الذاكرة والقرص الصلب أقوى من جهاز العميل ، بعد نشر البرنامج ، يجب أن يبدأ في وضع الخادم للحصول على أداء أفضل ؛
JVM الافتراضيات إلى -xms هي 1M ، -xmx هو 64m في وضع العميل ؛ JVM الافتراضيات إلى -xms هي 128m ، -xmx هي 1024m في وضع الخادم ؛
الخادم: بدء التشغيل البطيء وتجميع أكثر اكتمالا. المترجم هو برنامج التحويل البرمجي التكيفي ذو الكفاءة العالية وهو مصمم لتحسين التطبيقات من جانب الخادم وزيادة سرعة تنفيذ البرنامج في بيئة الخادم.
العميل: بدء التشغيل السريع ، واستخدام ذاكرة منخفضة ، وتجميع سريع ، ومحسّن لتطبيقات سطح المكتب ، تم تحسينه لتقليل وقت بدء التشغيل في بيئة العميل ؛
عند استخدام JVM لبدء التطبيقات التفاعلية لواجهة واجهة المستخدم الرسومية ، يوصى باستخدام وضع العميل عند استخدام JVM لتشغيل برنامج خلفية الخادم.
يمكننا التحقق من الوضع الذي يعمل JVM عن طريق التشغيل: Java -Version.
حول GCC في الشكل 1
في وضع العميل ، يختار الجيل الجديد GC التسلسلي ، بينما يختار الجيل القديم GC التسلسلي ، بينما يختار الجيل القديم GC التسلسلي
في وضع الخادم ، يختار الجيل الجديد إعادة تدوير GC المتوازي ، بينما يختار الجيل القديم GC المتوازي.
بشكل عام ، هناك طريقتان لاختيار تطبيق نظامنا: أولوية الإنتاجية وأولوية الوقت الموقف. بالنسبة لأولوية الإنتاجية ، يتم اعتماد طريقة GC المتوازية الخاصة بالخادم ، ولأولوية وقت توقف مؤقت ، يتم اعتماد طريقة GC (CMS) المتزامنة.
نقاط المعرفة الممتدة الأخرى
لدى JDK نوعين من تطبيقات خادم VM و VM و VM. يشترك الحلان في قاعدة رمز السقفة في بيئة وقت تشغيل Java ، ولكن استخدام المترجمين المختلفين وميزات الأداء الفريدة للعملاء والخوادم ، مع اختلافات بما في ذلك كتابة سياسات الخط والقيم الافتراضية للكومة.
على الرغم من أن الخادم يشبه الجهاز الظاهري للعميل ، فقد قام الخادم VM بتعديل الحد الأقصى لسرعة تشغيل الذروة بشكل خاص. والغرض منه هو تنفيذ تطبيقات الخادم الطويل الأمد ، والتي تتطلب أسرع سرعات التشغيل التي تتجاوز وقت بدء التشغيل السريع أو بصمة ذاكرة وقت تشغيل أصغر.
برنامج التحويل البرمجي للعميل VM هو جهاز افتراضي كلاسيكي ومترجم يستخدمه الترقيات في الوقت الفعلي (JIT) من خلال الإصدارات السابقة من JDK. توفر الأجهزة الافتراضية العميل أداءً محسّنًا لتشغيل التطبيقات والتطبيقات. النقاط الساخنة لأجهزة Java Virtual Machines قللت من وقت بدء التشغيل واستخدام الذاكرة للتطبيقات لجعلها مناسبة بشكل خاص لبيئة العملاء. بشكل عام ، يحتوي نظام العميل على واجهة مستخدم رسومية أفضل.
لذا فإن الفرق الحقيقي هو أيضًا على مستوى المترجم:
لا يحاول برنامج التحويل البرمجي الافتراضي للعميل إجراء تحسينات أكثر تعقيدًا يؤديها التحويل البرمجي على الجهاز الظاهري للخادم ، ولكن أثناء المبادلة ، يستغرق الأمر وقتًا أقل لتحليل وتجميع جزء من التعليمات البرمجية. هذا يعني أن الجهاز الظاهري للعميل يمكن أن يبدأ بشكل أسرع ويتطلب بصمة ذاكرة أصغر.
يحتوي الجهاز الظاهري للخادم على مترجم متكيف متقدم يدعم العديد من التحسينات المترجمة C ++ للتحسين ، ونفس النوع ، وبعض التحسينات التي لا يمكن القيام بها مع المترجمين التقليديين ، مثل مكالمات الطريقة الافتراضية المضمّنة بشكل نشط. هذه ميزة تنافسية وأداء ، مترجم ثابت. تقنيات التحسين التكيفي مرنة للغاية في مقاربتها وعادة ما تكون متفوقة على تقنيات التحليل والتجميع الثابتة المتقدمة.
عند البدء في وضع Server ، تكون السرعة بطيئة ، ولكن بمجرد تشغيلها ، سيتم تحسين الأداء بشكل كبير. والسبب هو أنه عندما يكون الجهاز الظاهري في الوضع الصحيح ، فإنه يستخدم برنامج التحويل البرمجي خفيف الوزن C1 ، بينما يستخدم الجهاز الظاهري في وضع Server مترجم ثقيل نسبيًا CODENAMED C2. يتم تجميع C2 بدقة نسبيًا من برنامج التحويل البرمجي C1 ، وبعد التقديم ، يكون له أداء أعلى.
بشكل عام ، فقط قم بتغيير ترتيب التكوينات المعروفة والمعروفة المعروفة ، طالما أن دليل JVA_HOME/JRE/BIN موجود في نفس الوقت ، والذي يتوافق مع JVM لكل منهما
بعد أن أقول الكثير ، لقد تلخص بالفعل في جملة واحدة:
يبدأ التطبيق ببطء ولكن يتم تشغيله بشكل أسرع في وضع خادم JVM ، بينما يبدأ التطبيق بسرعة ولكن يتم تشغيله بشكل أسرع في وضع عميل JVM.
الموصى به: يرجى التشغيل في وضع الخادم على الخادم ، وتشغيله في وضع العميل في وضع العميل أو وضع واجهة المستخدم الرسومية.