'\" t .\" Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Title: java .\" Language: Persian .\" Date: 03 March 2015 .\" SectDesc: Basic Tools .\" Software: JDK 8 .\" Arch: generic .\" Part Number: E38207-04 .\" Doc ID: JSSON .\" .if n .pl 99999 .TH "java" "1" "03 March 2015" "JDK 8" "Basic Tools" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" java \- برنامه راه‌انداز برنامه‌های کاربردی جاوا .SH "خلاصه دستور (SYNOPSIS)" .sp .if n \{\ .RS 4 .\} .nf \fBjava\fR [\fIoptions\fR] \fIclassname\fR [\fIargs\fR] .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf \fBjava\fR [\fIoptions\fR] \fB\-jar\fR \fIfilename\fR [\fIargs\fR] .fi .if n \{\ .RE .\} .PP \fIoptions\fR .RS 4 گزینه‌های خط فرمان که با فاصله از هم جدا می‌شوند\&. بخش گزینه‌ها را ببینید\&. .RE .PP \fIclassname\fR .RS 4 نام کلاسی که باید راه‌اندازی شود\&. .RE .PP \fIfilename\fR .RS 4 نام فایل آرشیو جاوا (JAR) که باید فراخوانی شود\&. تنها با گزینه \fB\-jar\fR استفاده می‌شود\&. .RE .PP \fIargs\fR .RS 4 آرگومان‌هایی که با فاصله از هم جدا شده و به متد \fBmain()\fR پاس داده می‌شوند\&. .RE .SH "توضیحات (DESCRIPTION)" .PP دستور \fBjava\fR یک برنامه کاربردی جاوا را اجرا می‌کند\&. این کار با راه‌اندازی محیط زمان اجرای جاوا (JRE)، بارگذاری کلاس مشخص‌شده، و فراخوانی متد \fBmain()\fR آن کلاس انجام می‌شود\&. این متد باید به صورت \fIpublic\fR و \fIstatic\fR تعریف شده باشد، نباید هیچ مقداری را بازگرداند، و باید یک آرایه از نوع \fBString\fR را به عنوان پارامتر بپذیرد\&. تعریف این متد ساختار زیر را دارد: .sp .if n \{\ .RS 4 .\} .nf \fBpublic static void main(String[] args)\fR .fi .if n \{\ .RE .\} .PP دستور \fBjava\fR می‌تواند برای اجرای برنامه‌های JavaFX با بارگذاری کلاسی که یا دارای متد \fBmain()\fR است یا کلاس \fBjavafx\&.application\&.Application\fR را گسترش می‌دهد (extends)، استفاده شود\&. در حالت دوم، راه‌انداز یک نمونه از کلاس \fBApplication\fR ایجاد کرده، متد \fBinit()\fR آن را فراخوانی می‌کند، و سپس متد \fBstart(javafx\&.stage\&.Stage)\fR را فرا می‌خواند\&. .PP به‌طور پیش‌فرض، نخستین آرگومانی که گزینه دستور \fBjava\fR نباشد، نام کاملاً واجد شرایط (fully qualified name) کلاسی است که باید فراخوانی شود\&. اگر گزینه \fB\-jar\fR مشخص شده باشد، آرگومان آن نام فایل JAR حاوی کلاس‌ها و فایل‌های منابع برنامه خواهد بود\&. کلاس آغازین باید توسط هدر مانیفست \fBMain\-Class\fR در کد منبع آن تعیین شده باشد\&. .PP محیط JRE برای یافتن کلاس آغازین (و سایر کلاس‌های مورد استفاده برنامه) سه مجموعه از مکان‌ها را جستجو می‌کند: مسیر کلاس راه‌اندازی (bootstrap class path)، افزونه‌های نصب‌شده، و مسیر کلاس کاربر (user class path)\&. .PP آرگومان‌های پس از نام فایل کلاس یا نام فایل JAR به متد \fBmain()\fR پاس داده می‌شوند\&. .SH "گزینه‌ها (OPTIONS)" .PP دستور \fBjava\fR از طیف گسترده‌ای از گزینه‌ها پشتیبانی می‌کند که می‌توان آن‌ها را به دسته‌های زیر تقسیم کرد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گزینه‌های استاندارد (Standard Options) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گزینه‌های غیراستاندارد (Non-Standard Options) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گزینه‌های پیشرفته زمان اجرا (Advanced Runtime Options) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گزینه‌های پیشرفته کامپایلر JIT (Advanced JIT Compiler Options) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گزینه‌های پیشرفته قابلیت سرویس‌دهی (Advanced Serviceability Options) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} گزینه‌های پیشرفته جمع‌آوری زباله (Advanced Garbage Collection Options) .RE .PP پشتیبانی از گزینه‌های استاندارد توسط تمام پیاده‌سازی‌های ماشین مجازی جاوا (JVM) تضمین شده است\&. این گزینه‌ها برای کارهای متداول، از جمله بررسی نسخه JRE، تنظیم مسیر کلاس (class path)، فعال‌سازی خروجی با جزئیات کامل (verbose)، و غیره استفاده می‌شوند\&. .PP گزینه‌های غیراستاندارد، گزینه‌هایی با کاربرد عمومی و مختص ماشین مجازی Java HotSpot هستند؛ بنابراین پشتیبانی از آن‌ها توسط تمامی پیاده‌سازی‌های JVM تضمین نمی‌شود و ممکن است تغییر کنند\&. این گزینه‌ها با \fB\-X\fR شروع می‌شوند\&. .PP استفاده از گزینه‌های پیشرفته برای مصارف عادی توصیه نمی‌شود\&. این‌ها گزینه‌های مخصوص توسعه‌دهندگان هستند که به منظور تنظیم بخش‌های خاصی از عملکرد ماشین مجازی Java HotSpot به کار می‌روند؛ این گزینه‌ها اغلب نیازمندی‌های سیستمی خاصی دارند و ممکن است نیازمند دسترسی ویژه به پارامترهای پیکربندی سیستم باشند\&. همچنین پشتیبانی از آن‌ها توسط تمامی پیاده‌سازی‌های JVM تضمین نمی‌شود و ممکن است تغییر کنند\&. گزینه‌های پیشرفته با \fB\-XX\fR شروع می‌شوند\&. .PP برای اطلاع از گزینه‌هایی که در آخرین نسخه منسوخ یا حذف شده‌اند، بخشی به نام «گزینه‌های منسوخ و حذف‌شده» (Deprecated and Removed Options) در انتهای این سند وجود دارد\&. .PP گزینه‌های بولی (Boolean) برای فعال‌سازی قابلیتی که به‌طور پیش‌فرض غیرفعال است یا غیرفعال‌سازی قابلیتی که به‌طور پیش‌فرض فعال است به کار می‌روند\&. چنین گزینه‌هایی نیازی به پارامتر ندارند\&. گزینه‌های بولی \fB\-XX\fR با علامت مثبت (\fB\-XX:+\fR\fIOptionName\fR) فعال و با علامت منفی (\fB\-XX:\-\fR\fIOptionName\fR) غیرفعال می‌شوند\&. .PP برای گزینه‌هایی که نیازمند یک آرگومان هستند، آرگومان ممکن است با یک فاصله، دونقطه (:) یا علامت مساوی (=) از نام گزینه جدا شود، یا اینکه آرگومان مستقیماً به دنبال گزینه بیاید (نحو دقیق برای هر گزینه متفاوت است)\&. اگر انتظار می‌رود اندازه را به بایت مشخص کنید، می‌توانید از هیچ پسوندی استفاده نکنید، یا از پسوند \fBk\fR یا \fBK\fR برای کیلوبایت (KB)، \fBm\fR یا \fBM\fR برای مگابایت (MB)، \fBg\fR یا \fBG\fR برای گیگابایت (GB) استفاده نمایید\&. به عنوان مثال، برای تنظیم اندازه روی ۸ گیگابایت، می‌توانید یکی از مقادیر \fB8g\fR، \fB8192m\fR، \fB8388608k\fR، یا \fB8589934592\fR را به عنوان آرگومان مشخص کنید\&. اگر انتظار می‌رود درصد مشخص شود، از عددی بین ۰ تا ۱ استفاده کنید (به عنوان مثال، مقدار \fB0\&.25\fR را برای ۲۵٪ وارد کنید)\&. .SS "گزینه‌های استاندارد (Standard Options)" .PP این‌ها متداول‌ترین گزینه‌هایی هستند که توسط تمام پیاده‌سازی‌های JVM پشتیبانی می‌شوند\&. .PP \-agentlib:\fIlibname\fR[=\fIoptions\fR] .RS 4 کتابخانه عامل بومی (native agent library) مشخص‌شده را بارگذاری می‌کند\&. پس از نام کتابخانه، می‌توان از فهرستی از گزینه‌های ویژه کتابخانه که با کاما از هم جدا شده‌اند استفاده کرد\&. .sp اگر گزینه \fB\-agentlib:foo\fR مشخص شود، در این صورت JVM تلاش می‌کند کتابخانه‌ای با نام \fBlibfoo\&.so\fR را در مکانی که توسط متغیر سیستمی \fBLD_LIBRARY_PATH\fR مشخص شده است (در OS X این متغیر \fBDYLD_LIBRARY_PATH\fR است) بارگذاری کند\&. .sp مثال زیر نحوه بارگذاری کتابخانه ابزار پروفایل‌سازی هیپ (HPROF) و دریافت اطلاعات نمونه‌برداری CPU در هر ۲۰ میلی‌ثانیه با عمق پشته ۳ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-agentlib:hprof=cpu=samples,interval=20,depth=3\fR .fi .if n \{\ .RE .\} مثال زیر نحوه بارگذاری کتابخانه پروتکل ارتباط خطایابی جاوا (JDWP) و گوش دادن به اتصال سوکت روی درگاه ۸۰۰۰، با تعلیق JVM پیش از بارگذاری کلاس اصلی را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-agentlib:jdwp=transport=dt_socket,server=y,address=8000\fR .fi .if n \{\ .RE .\} برای کسب اطلاعات بیشتر درباره کتابخانه‌های عامل بومی، به موارد زیر مراجعه کنید: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} توضیحات بسته \fBjava\&.lang\&.instrument\fR در http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.html .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} بخش Agent Command Line Options در راهنمای رابط ابزارهای JVM در http://docs\&.oracle\&.com/javase/8/docs/platform/jvmti/jvmti\&.html#starting .RE .RE .PP \-agentpath:\fIpathname\fR[=\fIoptions\fR] .RS 4 کتابخانه عامل بومی مشخص‌شده با نام مسیر مطلق را بارگذاری می‌کند\&. این گزینه معادل \fB\-agentlib\fR است، اما از مسیر کامل و نام فایل کتابخانه استفاده می‌کند\&. .RE .PP \-client .RS 4 ماشین مجازی Java HotSpot Client VM را انتخاب می‌کند\&. نسخه ۶۴بیتی کیت توسعه جاوا (JDK) در حال حاضر این گزینه را نادیده گرفته و به جای آن از Server JVM استفاده می‌کند\&. .sp برای انتخاب پیش‌فرض JVM، بخش Server\-Class Machine Detection را در http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.html ببینید\&. .RE .PP \-D\fIproperty\fR=\fIvalue\fR .RS 4 مقدار یک ویژگی سیستمی را تنظیم می‌کند\&. متغیر \fIproperty\fR رشته‌ای بدون فاصله است که نام ویژگی را نشان می‌دهد\&. متغیر \fIvalue\fR رشته‌ای است که مقدار ویژگی را نشان می‌دهد\&. اگر \fIvalue\fR رشته‌ای دارای فاصله باشد، آن را درون علامت نقل‌قول قرار دهید (برای مثال \fB\-Dfoo="foo bar"\fR)\&. .RE .PP \-d32 .RS 4 برنامه را در یک محیط ۳۲بیتی اجرا می‌کند\&. اگر محیط ۳۲بیتی نصب نشده باشد یا پشتیبانی نشود، خطایی گزارش خواهد شد\&. به‌طور پیش‌فرض، برنامه در یک محیط ۳۲بیتی اجرا می‌شود مگر اینکه از یک سیستم ۶۴بیتی استفاده شود\&. .RE .PP \-d64 .RS 4 برنامه را در یک محیط ۶۴بیتی اجرا می‌کند\&. اگر محیط ۶۴بیتی نصب نشده باشد یا پشتیبانی نشود، خطایی گزارش خواهد شد\&. به‌طور پیش‌فرض، برنامه در یک محیط ۳۲بیتی اجرا می‌شود مگر اینکه از یک سیستم ۶۴بیتی استفاده شود\&. .sp در حال حاضر تنها Java HotSpot Server VM از عملکرد ۶۴بیتی پشتیبانی می‌کند و گزینه \fB\-server\fR با استفاده از \fB\-d64\fR به‌طور ضمنی اعمال می‌شود\&. گزینه \fB\-client\fR با استفاده از \fB\-d64\fR نادیده گرفته می‌شود\&. این مورد ممکن است در انتشار‌های آینده تغییر کند\&. .RE .PP \-disableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] .br \-da[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] .RS 4 گزاره‌های شرطی (assertions) را غیرفعال می‌کند\&. به‌طور پیش‌فرض، گزاره‌های شرطی در تمام بسته‌ها و کلاس‌ها غیرفعال هستند\&. .sp بدون هیچ آرگومانی، \fB\-disableassertions\fR (\fB\-da\fR) گزاره‌های شرطی را در تمام بسته‌ها و کلاس‌ها غیرفعال می‌کند\&. با آرگومان \fIpackagename\fR که به \fB\&.\&.\&.\fR ختم می‌شود، این سوییچ گزاره‌های شرطی را در بسته مشخص‌شده و هرگونه زیربسته غیرفعال می‌کند\&. اگر آرگومان صرفاً \fB\&.\&.\&.\fR باشد، این سوییچ گزاره‌های شرطی را در بسته بی‌نام در دایرکتوری کاری جاری غیرفعال می‌کند\&. با آرگومان \fIclassname\fR، این سوییچ گزاره‌های شرطی را در کلاس مشخص‌شده غیرفعال می‌کند\&. .sp گزینه \fB\-disableassertions\fR (\fB\-da\fR) روی تمام بارگذارنده‌های کلاس و کلاس‌های سیستمی (که بارگذارنده کلاس ندارند) اعمال می‌شود\&. یک استثنا برای این قاعده وجود دارد: اگر این گزینه بدون هیچ آرگومانی ارائه شود، روی کلاس‌های سیستمی اعمال نمی‌شود\&. این ویژگی غیرفعال کردن گزاره‌های شرطی را در تمام کلاس‌ها به جز کلاس‌های سیستمی آسان می‌کند\&. گزینه \fB\-disablesystemassertions\fR به شما امکان می‌دهد گزاره‌های شرطی را در تمام کلاس‌های سیستمی غیرفعال کنید\&. .sp برای فعال‌سازی صریح گزاره‌های شرطی در بسته‌ها یا کلاس‌های خاص، از گزینه \fB\-enableassertions\fR (\fB\-ea\fR) استفاده کنید\&. هر دو گزینه را می‌توان هم‌زمان استفاده کرد\&. برای مثال، جهت اجرای برنامه \fBMyClass\fR با گزاره‌های شرطیِ فعال در بسته \fBcom\&.wombat\&.fruitbat\fR (و هرگونه زیربسته) اما غیرفعال در کلاس \fBcom\&.wombat\&.fruitbat\&.Brickbat\fR، از دستور زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf \fBjava \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass\fR .fi .if n \{\ .RE .\} .RE .PP \-disablesystemassertions .br \-dsa .RS 4 گزاره‌های شرطی را در تمام کلاس‌های سیستمی غیرفعال می‌کند\&. .RE .PP \-enableassertions[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] .br \-ea[:[\fIpackagename\fR]\&.\&.\&.|:\fIclassname\fR] .RS 4 گزاره‌های شرطی (assertions) را فعال می‌کند\&. به‌طور پیش‌فرض، گزاره‌های شرطی در تمام بسته‌ها و کلاس‌ها غیرفعال هستند\&. .sp بدون هیچ آرگومانی، \fB\-enableassertions\fR (\fB\-ea\fR) گزاره‌های شرطی را در تمام بسته‌ها و کلاس‌ها فعال می‌کند\&. با آرگومان \fIpackagename\fR که به \fB\&.\&.\&.\fR ختم می‌شود، این سوییچ گزاره‌های شرطی را در بسته مشخص‌شده و هرگونه زیربسته فعال می‌کند\&. اگر آرگومان صرفاً \fB\&.\&.\&.\fR باشد، این سوییچ گزاره‌های شرطی را در بسته بی‌نام در دایرکتوری کاری جاری فعال می‌کند\&. با آرگومان \fIclassname\fR، این سوییچ گزاره‌های شرطی را در کلاس مشخص‌شده فعال می‌کند\&. .sp گزینه \fB\-enableassertions\fR (\fB\-ea\fR) روی تمام بارگذارنده‌های کلاس و کلاس‌های سیستمی (که بارگذارنده کلاس ندارند) اعمال می‌شود\&. یک استثنا برای این قاعده وجود دارد: اگر این گزینه بدون هیچ آرگومانی ارائه شود، روی کلاس‌های سیستمی اعمال نمی‌شود\&. این ویژگی فعال کردن گزاره‌های شرطی را در تمام کلاس‌ها به جز کلاس‌های سیستمی آسان می‌کند\&. گزینه \fB\-enablesystemassertions\fR یک سوییچ جداگانه برای فعال کردن گزاره‌های شرطی در تمام کلاس‌های سیستمی فراهم می‌کند\&. .sp برای غیرفعال‌سازی صریح گزاره‌های شرطی در بسته‌ها یا کلاس‌های خاص، از گزینه \fB\-disableassertions\fR (\fB\-da\fR) استفاده کنید\&. اگر یک دستور شامل چندین نمونه از این سوییچ‌ها باشد، آن‌ها به ترتیب قبل از بارگذاری هر کلاسی پردازش می‌شوند\&. برای مثال، جهت اجرای برنامه \fBMyClass\fR با گزاره‌های شرطیِ فعال فقط در بسته \fBcom\&.wombat\&.fruitbat\fR (و هرگونه زیربسته) اما غیرفعال در کلاس \fBcom\&.wombat\&.fruitbat\&.Brickbat\fR، از دستور زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf \fBjava \-ea:com\&.wombat\&.fruitbat\&.\&.\&. \-da:com\&.wombat\&.fruitbat\&.Brickbat MyClass\fR .fi .if n \{\ .RE .\} .RE .PP \-enablesystemassertions .br \-esa .RS 4 گزاره‌های شرطی را در تمام کلاس‌های سیستمی فعال می‌کند\&. .RE .PP \-help .br \-? .RS 4 اطلاعات نحوه استفاده از دستور \fBjava\fR را بدون اجرای واقعی JVM نمایش می‌دهد\&. .RE .PP \-jar \fIfilename\fR .RS 4 برنامه‌ای را که درون یک فایل JAR بسته‌بندی شده است اجرا می‌کند\&. آرگومان \fIfilename\fR نام یک فایل JAR به همراه مانیفستی است که شامل خطی به شکل \fBMain\-Class:\fR\fIclassname\fR است؛ خطی که کلاسی با متد \fBpublic static void main(String[] args)\fR را که به عنوان نقطه شروع برنامه شما عمل می‌کند تعریف می‌نماید\&. .sp هنگامی که از گزینه \fB\-jar\fR استفاده می‌کنید، فایل JAR مشخص‌شده منبع تمام کلاس‌های کاربر است و سایر تنظیمات مسیر کلاس (class path) نادیده گرفته می‌شوند\&. .sp برای اطلاعات بیشتر درباره فایل‌های JAR، به منابع زیر مراجعه کنید: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} jar(1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} راهنمای The Java Archive (JAR) Files در http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/jar/index\&.html .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} بخش Lesson: Packaging Programs in JAR Files در http://docs\&.oracle\&.com/javase/tutorial/deployment/jar/index\&.html .RE .RE .PP \-javaagent:\fIjarpath\fR[=\fIoptions\fR] .RS 4 عامل زبان برنامه‌نویسی جاوا مشخص‌شده را بارگذاری می‌کند\&. برای اطلاعات بیشتر درباره ابزارسازی برنامه‌های جاوا (instrumenting)، به توضیحات بسته \fBjava\&.lang\&.instrument\fR در مستندات Java API در http://docs\&.oracle\&.com/javase/8/docs/api/java/lang/instrument/package\-summary\&.html مراجعه کنید\&. .RE .PP \-jre\-restrict\-search .RS 4 محیط‌های JRE خصوصی کاربر را در جستجوی نسخه لحاظ می‌کند\&. .RE .PP \-no\-jre\-restrict\-search .RS 4 محیط‌های JRE خصوصی کاربر را از جستجوی نسخه مستثنی می‌کند\&. .RE .PP \-server .RS 4 ماشین مجازی Java HotSpot Server VM را انتخاب می‌کند\&. نسخه ۶۴بیتی JDK فقط از Server VM پشتیبانی می‌کند، بنابراین در آن حالت این گزینه به‌طور ضمنی اعمال می‌شود\&. .sp برای انتخاب پیش‌فرض JVM، بخش Server\-Class Machine Detection را در http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/server\-class\&.html ببینید\&. .RE .PP \-showversion .RS 4 اطلاعات نسخه را نمایش می‌دهد و به اجرای برنامه ادامه می‌دهد\&. این گزینه معادل گزینه \fB\-version\fR است، با این تفاوت که گزینه اخیر به JVM دستور می‌دهد پس از نمایش اطلاعات نسخه خارج شود\&. .RE .PP \-splash:\fIimgname\fR .RS 4 صفحه آغازین (splash screen) را با تصویر مشخص‌شده توسط \fIimgname\fR نمایش می‌دهد\&. برای مثال، جهت نمایش فایل \fBsplash\&.gif\fR از پوشه \fBimages\fR هنگام شروع برنامه، از گزینه زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-splash:images/splash\&.gif\fR .fi .if n \{\ .RE .\} .RE .PP \-verbose:class .RS 4 اطلاعات مربوط به هر کلاس بارگذاری‌شده را نمایش می‌دهد\&. .RE .PP \-verbose:gc .RS 4 اطلاعات مربوط به هر رویداد جمع‌آوری زباله (GC) را نمایش می‌دهد\&. .RE .PP \-verbose:jni .RS 4 اطلاعات مربوط به استفاده از متدهای بومی و سایر فعالیت‌های رابط بومی جاوا (JNI) را نمایش می‌دهد\&. .RE .PP \-version .RS 4 اطلاعات نسخه را نمایش می‌دهد و سپس خارج می‌شود\&. این گزینه معادل گزینه \fB\-showversion\fR است، با این تفاوت که گزینه اخیر به JVM دستور خروج پس از نمایش اطلاعات نسخه را نمی‌دهد\&. .RE .PP \-version:\fIrelease\fR .RS 4 نسخه انتشار مورد استفاده برای اجرای برنامه را مشخص می‌کند\&. اگر نسخه دستور \fBjava\fR فراخوانی‌شده با این مشخصات مطابقت نداشته باشد و یک پیاده‌سازی مناسب روی سیستم یافت شود، پیاده‌سازی مناسب استفاده خواهد شد\&. .sp آرگومان \fIrelease\fR یا رشته نسخه دقیق و یا فهرستی از رشته‌های نسخه و محدوده‌ها را که با فاصله از هم جدا شده‌اند مشخص می‌کند\&. یک \fIرشته نسخه\fR تعیین توسعه‌دهنده برای شماره نسخه به شکل زیر است: \fB1\&.\fR\fIx\fR\fB\&.0_\fR\fIu\fR (که در آن \fIx\fR شماره نسخه اصلی (major) و \fIu\fR شماره نسخه به‌روزرسانی (update) است)\&. یک \fIمحدوده نسخه\fR شامل یک رشته نسخه است که به دنبال آن یک علامت بعلاوه (\fB+\fR) برای مشخص کردن این نسخه یا بالاتر، یا بخشی از یک رشته نسخه به همراه یک ستاره (\fB*\fR) برای تعیین هر رشته نسخه با پیشوند منطبق می‌آید\&. رشته‌ها و محدوده‌های نسخه را می‌توان با استفاده از یک فاصله برای ترکیب منطقی \fIOR\fR یا علامت امپرسند (\fB&\fR) برای ترکیب منطقی \fIAND\fR دو رشته/محدوده نسخه با یکدیگر ترکیب کرد\&. برای مثال، اگر اجرای کلاس یا فایل JAR به JRE 6u13 (1\&.6\&.0_13) یا هر JRE 6 با شروع از 6u10 (1\&.6\&.0_10) نیاز دارد، عبارت زیر را مشخص کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-version:"1\&.6\&.0_13 1\&.6* & 1\&.6\&.0_10+"\fR .fi .if n \{\ .RE .\} علامت نقل‌قول تنها در صورتی لازم است که در پارامتر \fIrelease\fR فاصله وجود داشته باشد\&. .sp برای فایل‌های JAR، اولویت بر این است که نیازمندی‌های نسخه به جای خط فرمان، در مانیفست فایل JAR مشخص شوند\&. .RE .SS "گزینه‌های غیر استاندارد (Non-Standard Options)" .PP این گزینه‌ها، گزینه‌هایی با کاربرد عمومی هستند که مختص ماشین مجازی هات‌اسپات جاوا (Java HotSpot Virtual Machine) می‌باشند\&. .PP \-X .RS 4 راهنمای تمام گزینه‌های موجود \fB\-X\fR را نمایش می‌دهد\&. .RE .PP \-Xbatch .RS 4 کامپایل در پس‌زمینه را غیرفعال می‌کند\&. به‌طور پیش‌فرض، JVM متد را به‌عنوان یک تسک پس‌زمینه کامپایل می‌کند و تا زمان پایان کامپایل پس‌زمینه، متد را در حالت مفسر اجرا می‌نماید\&. فلگ \fB\-Xbatch\fR کامپایل پس‌زمینه را غیرفعال می‌کند تا کامپایل تمام متدها به‌عنوان یک تسک پیش‌زمینه تا زمان تکمیل پیش برود\&. .sp این گزینه معادل \fB\-XX:\-BackgroundCompilation\fR است\&. .RE .PP \-Xbootclasspath:\fIpath\fR .RS 4 فهرستی از دایرکتوری‌ها، فایل‌های JAR و آرشیوهای ZIP را مشخص می‌کند که با دونقطه (:) از هم جدا شده‌اند تا برای یافتن فایل‌های کلاس بوت (Boot Class Files) جستجو شوند\&. این موارد به‌جای فایل‌های کلاس بوت گنجانده‌شده در JDK استفاده می‌شوند\&. .sp برنامه‌هایی را که از این گزینه برای جایگزینی یک کلاس در \fBrt\&.jar\fR استفاده می‌کنند مستقر نکنید، زیرا این کار مجوز کد باینری JRE را نقض می‌کند\&. .RE .PP \-Xbootclasspath/a:\fIpath\fR .RS 4 فهرستی از دایرکتوری‌ها، فایل‌های JAR و آرشیوهای ZIP جداشده با دونقطه (:) را جهت الحاق به انتهای مسیر کلاس بوت‌استرپ پیش‌فرض (Bootstrap Class Path) مشخص می‌کند\&. .sp برنامه‌هایی را که از این گزینه برای جایگزینی یک کلاس در \fBrt\&.jar\fR استفاده می‌کنند مستقر نکنید، زیرا این کار مجوز کد باینری JRE را نقض می‌کند\&. .RE .PP \-Xbootclasspath/p:\fIpath\fR .RS 4 فهرستی از دایرکتوری‌ها، فایل‌های JAR و آرشیوهای ZIP جداشده با دونقطه (:) را جهت افزودن به ابتدای مسیر کلاس بوت‌استرپ پیش‌فرض (Bootstrap Class Path) مشخص می‌کند\&. .sp برنامه‌هایی را که از این گزینه برای جایگزینی یک کلاس در \fBrt\&.jar\fR استفاده می‌کنند مستقر نکنید، زیرا این کار مجوز کد باینری JRE را نقض می‌کند\&. .RE .PP \-Xcheck:jni .RS 4 بررسی‌های تکمیلی را برای توابع رابط بومی جاوا (Java Native Interface یا JNI) انجام می‌دهد\&. به‌طور مشخص، پارامترهای ارائه‌شده به تابع JNI و داده‌های محیط زمان اجرا را پیش از پردازش درخواست JNI اعتبارسنجی می‌کند\&. مواجهه با هرگونه داده نامعتبر نشان‌دهنده وجود مشکل در کد بومی (Native Code) است و JVM در چنین مواردی با یک خطای غیرقابل‌بازیابی متوقف خواهد شد\&. هنگام استفاده از این گزینه، افت کارایی را انتظار داشته باشید\&. .RE .PP \-Xcomp .RS 4 کامپایل اجباری متدها را در اولین فراخوانی اعمال می‌کند\&. به‌طور پیش‌فرض، Client VM (\fB\-client\fR) تعداد ۱,۰۰۰ فراخوانی تفسیری متد و Server VM (\fB\-server\fR) تعداد ۱۰,۰۰۰ فراخوانی تفسیری متد را برای جمع‌آوری اطلاعات لازم جهت کامپایل بهینه انجام می‌دهند\&. تعیین گزینه \fB\-Xcomp\fR فراخوانی‌های تفسیری متد را غیرفعال می‌کند تا سرعت کامپایل به قیمت کاهش بهره‌وری افزایش یابد\&. .sp همچنین می‌توانید با استفاده از گزینه \fB\-XX:CompileThreshold\fR تعداد فراخوانی‌های تفسیری متد پیش از کامپایل را تغییر دهید\&. .RE .PP \-Xdebug .RS 4 هیچ کاری انجام نمی‌دهد؛ برای سازگاری با نسخه‌های پیشین ارائه شده است\&. .RE .PP \-Xdiag .RS 4 پیام‌های تشخیصی اضافی را نمایش می‌دهد\&. .RE .PP \-Xfuture .RS 4 بررسی‌های سخت‌گیرانه قالب فایل کلاس (Class-File Format) را فعال می‌کند که انطباق دقیق با مشخصات قالب فایل کلاس را اعمال می‌نماید\&. به توسعه‌دهندگان توصیه می‌شود هنگام توسعه کدهای جدید از این فلگ استفاده کنند، زیرا بررسی‌های سخت‌گیرانه‌تر در انتشار‌های آینده به حالت پیش‌فرض تبدیل خواهند شد\&. .RE .PP \-Xint .RS 4 برنامه را فقط در حالت تفسیری (Interpreted-Only) اجرا می‌کند\&. کامپایل به کد بومی غیرفعال است و تمام بایت‌کد توسط مفسر اجرا می‌شود\&. مزایای کارایی ارائه‌شده توسط کامپایلر درجا (JIT) در این حالت وجود ندارد\&. .RE .PP \-Xinternalversion .RS 4 اطلاعات دقیق‌تری از نسخه JVM را نسبت به گزینه \fB\-version\fR نمایش داده و سپس خارج می‌شود\&. .RE .PP \-Xloggc:\fIfilename\fR .RS 4 فایلی را تنظیم می‌کند که اطلاعات تفصیلی رویدادهای زباله‌روب (GC) باید برای لاگ‌گیری به آن هدایت شوند\&. اطلاعات نوشته‌شده در این فایل مشابه خروجی \fB\-verbose:gc\fR است که زمان سپری‌شده از اولین رویداد GC را پیش از هر رویداد ثبت‌شده درج می‌کند\&. اگر هر دو گزینه به یک دستور \fBjava\fR داده شوند، گزینه \fB\-Xloggc\fR بر گزینه \fB\-verbose:gc\fR ارجحیت داشته و آن را بازنویسی می‌کند\&. .sp مثال: .sp .if n \{\ .RS 4 .\} .nf \fB\-Xloggc:garbage\-collection\&.log\fR .fi .if n \{\ .RE .\} .RE .PP \-Xmaxjitcodesize=\fIsize\fR .RS 4 حداکثر اندازه حافظه موقت کد (Code Cache) را (به بایت) برای کدهای کامپایل‌شده با JIT مشخص می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. حداکثر اندازه پیش‌فرض کَش کد ۲۴۰ مگابایت است؛ اگر کامپایل لایه‌ای (Tiered Compilation) را با گزینه \fB\-XX:\-TieredCompilation\fR غیرفعال کنید، اندازه پیش‌فرض ۴۸ مگابایت خواهد بود: .sp .if n \{\ .RS 4 .\} .nf \fB\-Xmaxjitcodesize=240m\fR .fi .if n \{\ .RE .\} این گزینه معادل \fB\-XX:ReservedCodeCacheSize\fR است\&. .RE .PP \-Xmixed .RS 4 تمام بایت‌کدها را از طریق مفسر اجرا می‌کند، به‌جز متدهای داغ (Hot Methods) که به کد بومی کامپایل می‌شوند\&. .RE .PP \-Xmn\fIsize\fR .RS 4 اندازه اولیه و حداکثر اندازه (به بایت) هیپ (Heap) را برای نسل جوان (Young Generation / Nursery) تنظیم می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. .sp ناحیه نسل جوان در حافظه هیپ برای اشیاء جدید استفاده می‌شود\&. فرآیند جمع‌آوری زباله (GC) در این ناحیه بیشتر از سایر نواحی انجام می‌گیرد\&. اگر اندازه نسل جوان خیلی کوچک باشد، تعداد زیادی عملیات جزئی جمع‌آوری زباله (Minor GC) انجام خواهد شد\&. اگر این اندازه خیلی بزرگ باشد، فقط عملیات‌های کامل جمع‌آوری زباله (Full GC) اجرا می‌شوند که تکمیل آن‌ها ممکن است زمان زیادی ببرد\&. شرکت اوراکل توصیه می‌کند اندازه نسل جوان را بین یک‌دوم تا یک‌چهارم کل اندازه هیپ نگه دارید\&. .sp مثال‌های زیر نحوه تنظیم اندازه اولیه و حداکثری نسل جوان را روی ۲۵۶ مگابایت با واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-Xmn256m\fR \fB\-Xmn262144k\fR \fB\-Xmn268435456\fR .fi .if n \{\ .RE .\} به‌جای استفاده از گزینه \fB\-Xmn\fR جهت تنظیم همزمان اندازه اولیه و حداکثری هیپ برای نسل جوان، می‌توانید از \fB\-XX:NewSize\fR برای تنظیم اندازه اولیه و از \fB\-XX:MaxNewSize\fR برای تنظیم حداکثر اندازه استفاده کنید\&. .RE .PP \-Xms\fIsize\fR .RS 4 اندازه اولیه (به بایت) هیپ را تنظیم می‌کند\&. این مقدار باید مضربی از ۱۰۲۴ و بزرگ‌تر از ۱ مگابایت باشد\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. .sp مثال‌های زیر نحوه تنظیم اندازه حافظه تخصیص‌یافته را روی ۶ مگابایت با واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-Xms6291456\fR \fB\-Xms6144k\fR \fB\-Xms6m\fR .fi .if n \{\ .RE .\} اگر این گزینه را تنظیم نکنید، اندازه اولیه برابر با مجموع اندازه‌های تخصیص‌یافته برای نسل قدیم (Old Generation) و نسل جوان تنظیم خواهد شد\&. اندازه اولیه هیپ برای نسل جوان را می‌توان با استفاده از گزینه \fB\-Xmn\fR یا گزینه \fB\-XX:NewSize\fR تنظیم کرد\&. .RE .PP \-Xmx\fIsize\fR .RS 4 حداکثر اندازه (به بایت) استخر تخصیص حافظه را مشخص می‌کند\&. این مقدار باید مضربی از ۱۰۲۴ و بزرگ‌تر از ۲ مگابایت باشد\&. حرف \fBk\fR یا \fBK\fR را برای کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. مقدار پیش‌فرض در زمان اجرا بر اساس پیکربندی سیستم انتخاب می‌شود\&. در استقرارهای سرور، معمولاً \fB\-Xms\fR و \fB\-Xmx\fR روی یک مقدار یکسان تنظیم می‌شوند\&. بخش «Ergonomics» را در \fIJava SE HotSpot Virtual Machine Garbage Collection Tuning Guide\fR به آدرس http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gctuning/index\&.html ببینید\&. .sp مثال‌های زیر نحوه تنظیم حداکثر اندازه مجاز حافظه تخصیص‌یافته را روی ۸۰ مگابایت با واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-Xmx83886080\fR \fB\-Xmx81920k\fR \fB\-Xmx80m\fR .fi .if n \{\ .RE .\} گزینه \fB\-Xmx\fR معادل \fB\-XX:MaxHeapSize\fR است\&. .RE .PP \-Xnoclassgc .RS 4 عملیات جمع‌آوری زباله (GC) را برای کلاس‌ها غیرفعال می‌کند\&. این امر می‌تواند مقداری از زمان GC را ذخیره کرده و وقفه‌های اجرای برنامه را کوتاه‌تر نماید\&. .sp هنگامی که گزینه \fB\-Xnoclassgc\fR را در زمان راه‌اندازی تعیین می‌کنید، اشیاء کلاس در برنامه در طول GC دست‌نخورده باقی می‌مانند و همواره زنده تلقی خواهند شد\&. این موضوع می‌تواند منجر به اشغال دائمی حافظه بیشتر شود و در صورت عدم دقت، خطای اتمام حافظه (Out Of Memory Exception) رخ خواهد داد\&. .RE .PP \-Xprof .RS 4 برنامه در حال اجرا را پروفایل‌بندی (تحلیل کارایی) کرده و داده‌های آن را به خروجی استاندارد ارسال می‌کند\&. این گزینه به‌عنوان ابزاری کاربردی در مرحله توسعه برنامه ارائه شده و برای استفاده در سیستم‌های عملیاتی (Production) در نظر گرفته نشده است\&. .RE .PP \-Xrs .RS 4 استفاده از سیگنال‌های سیستم‌عامل توسط JVM را کاهش می‌دهد\&. .sp قلاب‌های خاموشی (Shutdown Hooks) امکان بسته‌شدن منظم برنامه جاوا را از طریق اجرای کدهای پاک‌سازی کاربر (مانند بستن اتصالات پایگاه‌داده) هنگام خاموشی فراهم می‌سازند، حتی اگر JVM به‌طور ناگهانی خاتمه یابد\&. .sp ماشین مجازی JVM سیگنال‌ها را رهگیری می‌کند تا قلاب‌های خاموشی را برای پایان‌های غیرمنتظره اجرا کند\&. ماشین مجازی JVM از سیگنال‌های \fBSIGHUP\fR، \fBSIGINT\fR و \fBSIGTERM\fR برای شروع اجرای قلاب‌های خاموشی استفاده می‌کند\&. .sp ماشین مجازی JVM از سازوکار مشابهی برای پیاده‌سازی قابلیت تخلیه پشته رشته‌ها (Thread Dump) به‌منظور اشکال‌زدایی بهره می‌برد\&. ماشین مجازی JVM از سیگنال \fBSIGQUIT\fR برای تخلیه پشته رشته‌ها استفاده می‌کند\&. .sp برنامه‌هایی که JVM را درون خود جای داده‌اند (Embedded)، غالباً نیاز به گرفتن سیگنال‌هایی نظیر \fBSIGINT\fR یا \fBSIGTERM\fR دارند که می‌تواند به تداخل با گرداننده‌های سیگنال JVM منجر شود\&. گزینه \fB\-Xrs\fR برای رفع این مشکل در دسترس است\&. هنگامی که از \fB\-Xrs\fR استفاده می‌شود، ماسک‌های سیگنال برای \fBSIGINT\fR، \fBSIGTERM\fR، \fBSIGHUP\fR و \fBSIGQUIT\fR توسط JVM تغییر نمی‌کنند و گرداننده‌های سیگنال برای این سیگنال‌ها نصب نمی‌شوند\&. .sp تعیین گزینه \fB\-Xrs\fR دو پیامد به همراه دارد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} تخلیه پشته رشته‌ها (Thread Dumps) از طریق \fBSIGQUIT\fR در دسترس نخواهد بود\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} کد کاربر مسئول اجرای قلاب‌های خاموشی خواهد بود، به‌عنوان مثال با فراخوانی \fBSystem\&.exit()\fR هنگامی که قرار است JVM خاتمه یابد\&. .RE .RE .PP \-Xshare:\fImode\fR .RS 4 حالت اشتراک‌گذاری داده‌های کلاس (Class Data Sharing یا CDS) را تعیین می‌کند\&. آرگومان‌های ممکن برای \fImode\fR در این گزینه عبارتند از: .PP auto .RS 4 در صورت امکان از CDS استفاده شود\&. این مقدار پیش‌فرض برای Java HotSpot 32\-Bit Client VM است\&. .RE .PP on .RS 4 استفاده از CDS الزامی است\&. در صورتی که نتوان از اشتراک‌گذاری داده‌های کلاس استفاده کرد، پیام خطا چاپ کرده و خارج شود\&. .RE .PP off .RS 4 از CDS استفاده نشود\&. این مقدار پیش‌فرض برای Java HotSpot 32\-Bit Server VM، Java HotSpot 64\-Bit Client VM و Java HotSpot 64\-Bit Server VM است\&. .RE .PP dump .RS 4 تولید دستی آرشیو CDS\&. مسیر کلاس برنامه را همان‌طور که در «تنظیم مسیر کلاس» شرح داده شده است تعیین کنید\&. .sp شما باید با هر انتشار جدید JDK آرشیو CDS را مجدداً ایجاد کنید\&. .RE .RE .PP \-XshowSettings:\fIcategory\fR .RS 4 تنظیمات را نمایش داده و ادامه می‌دهد\&. آرگومان‌های ممکن برای \fIcategory\fR در این گزینه عبارتند از: .PP all .RS 4 تمام دسته‌بندی‌های تنظیمات را نمایش می‌دهد\&. این مقدار پیش‌فرض است\&. .RE .PP locale .RS 4 تنظیمات مربوط به محلی‌سازی (Locale) را نمایش می‌دهد\&. .RE .PP properties .RS 4 تنظیمات مربوط به ویژگی‌های سیستم (System Properties) را نمایش می‌دهد\&. .RE .PP vm .RS 4 تنظیمات JVM را نمایش می‌دهد\&. .RE .RE .PP \-Xss\fIsize\fR .RS 4 اندازه پشته رشته (Thread Stack Size) را (به بایت) تنظیم می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای کیلوبایت (KB)، \fBm\fR یا \fBM\fR را برای مگابایت (MB) و \fBg\fR یا \fBG\fR را برای گیگابایت (GB) اضافه کنید\&. مقدار پیش‌فرض بستگی به پلتفرم دارد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Linux/ARM (32\-bit): 320 KB .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Linux/i386 (32\-bit): 320 KB .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Linux/x64 (64\-bit): 1024 KB .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} OS X (64\-bit): 1024 KB .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Oracle Solaris/i386 (32\-bit): 320 KB .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Oracle Solaris/x64 (64\-bit): 1024 KB .RE .sp مثال‌های زیر نحوه تنظیم اندازه پشته رشته را روی ۱۰۲۴ کیلوبایت با واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-Xss1m\fR \fB\-Xss1024k\fR \fB\-Xss1048576\fR .fi .if n \{\ .RE .\} این گزینه معادل \fB\-XX:ThreadStackSize\fR است\&. .RE .PP \-Xusealtsigs .RS 4 استفاده از سیگنال‌های جایگزین به‌جای \fBSIGUSR1\fR و \fBSIGUSR2\fR برای سیگنال‌های داخلی JVM\&. این گزینه معادل \fB\-XX:+UseAltSigs\fR است\&. .RE .PP \-Xverify:\fImode\fR .RS 4 حالت اعتبارسنج بایت‌کد (Bytecode Verifier) را تنظیم می‌کند\&. اعتبارسنجی بایت‌کد به عیب‌یابی برخی مشکلات کمک می‌کند، اما سرباری را نیز به برنامه در حال اجرا اضافه می‌نماید\&. آرگومان‌های ممکن برای \fImode\fR در این گزینه عبارتند از: .PP none .RS 4 بایت‌کد اعتبارسنجی نشود\&. این کار زمان راه‌اندازی را کاهش می‌دهد و همچنین محافظت ارائه‌شده توسط جاوا را کم می‌کند\&. .RE .PP remote .RS 4 کلاس‌هایی را که توسط بارگذار کلاس بوت‌استرپ بارگذاری نشده‌اند اعتبارسنجی کند\&. اگر گزینه \fB\-Xverify\fR را تعیین نکنید، این رفتار پیش‌فرض است\&. .RE .PP all .RS 4 تمام کلاس‌ها اعتبارسنجی شوند\&. .RE .RE .SS "گزینه‌های پیشرفته زمان اجرا (Advanced Runtime Options)" .PP این گزینه‌ها رفتار زمان اجرای Java HotSpot VM را کنترل می‌کنند\&. .PP \-XX:+CheckEndorsedAndExtDirs .RS 4 گزینه‌ای را فعال می‌کند که از اجرای برنامه جاوا توسط دستور \fBjava\fR در صورتی که از سازوکار بازنویسی استانداردهای تاییدشده (endorsed\-standards override) یا سازوکار افزونه‌ها (extension mechanism) استفاده کند، جلوگیری می‌نماید\&. این گزینه با بررسی موارد زیر تشخیص می‌دهد که آیا برنامه از یکی از این سازوکارها استفاده می‌کند یا خیر: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ویژگی سیستمی \fBjava\&.ext\&.dirs\fR یا \fBjava\&.endorsed\&.dirs\fR تنظیم شده باشد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} دایرکتوری \fBlib/endorsed\fR وجود داشته و خالی نباشد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} دایرکتوری \fBlib/ext\fR شامل هرگونه فایل JAR دیگری غیر از فایل‌های مربوط به JDK باشد\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} دایرکتوری افزونه‌های سرتاسری سیستم و وابسته به پلتفرم شامل هرگونه فایل JAR باشد\&. .RE .RE .PP \-XX:+DisableAttachMechanism .RS 4 گزینه‌ای را فعال می‌کند که سازوکار متصل شدن (attach) ابزارها به JVM را غیرفعال می‌سازد\&. به‌طور پیش‌فرض، این گزینه غیرفعال است؛ به این معنی که سازوکار اتصال فعال بوده و می‌توانید از ابزارهایی مانند \fBjcmd\fR، \fBjstack\fR، \fBjmap\fR و \fBjinfo\fR استفاده کنید\&. .RE .PP \-XX:ErrorFile=\fIfilename\fR .RS 4 مسیر و نام فایلی را مشخص می‌کند که هنگام وقوع خطای غیرقابل‌جبران، داده‌های خطا در آن نوشته می‌شوند\&. به‌طور پیش‌فرض، این فایل در دایرکتوری کاری جاری و با نام \fBhs_err_pid\fR\fIpid\fR\fB\&.log\fR ایجاد می‌شود که در آن \fIpid\fR شناسه فرآیندی است که موجب بروز خطا شده است\&. مثال زیر نحوه تنظیم فایل گزارش پیش‌فرض را نشان می‌دهد (توجه داشته باشید که شناسه فرآیند به‌صورت \fB%p\fR مشخص می‌شود): .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:ErrorFile=\&./hs_err_pid%p\&.log\fR .fi .if n \{\ .RE .\} مثال زیر نحوه تنظیم گزارش خطا را روی \fB/var/log/java/java_error\&.log\fR نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:ErrorFile=/var/log/java/java_error\&.log\fR .fi .if n \{\ .RE .\} اگر فایل نتواند در دایرکتوری مشخص‌شده ایجاد شود (به‌دلیل کمبود فضا، مشکل مجوز یا هر مسئله دیگری)، فایل در دایرکتوری موقت سیستم‌عامل ایجاد می‌شود\&. دایرکتوری موقت \fB/tmp\fR است\&. .RE .PP \-XX:+FailOverToOldVerifier .RS 4 جابه‌جایی خودکار به اعتبارسنج قدیمی (failover) را در صورت شکست بازبین نوع جدید (new type checker) فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و برای کلاس‌هایی با نسخه بایت‌کد جدید نادیده گرفته می‌شود (یعنی به‌صورت غیرفعال در نظر گرفته می‌شود)\&. می‌توانید آن را برای کلاس‌هایی با نسخه‌های قدیمی‌تر بایت‌کد فعال کنید\&. .RE .PP \-XX:LargePageSizeInBytes=\fIsize\fR .RS 4 در سیستم‌عامل Solaris، حداکثر اندازه (به بایت) صفحات بزرگ (large pages) مورد استفاده برای هیپ جاوا را تعیین می‌کند\&. آرگومان \fIsize\fR باید توانی از ۲ (۲، ۴، ۸، ۱۶، \&.\&.\&.) باشد\&. حرف \fBk\fR یا \fBK\fR را برای تعیین کیلوبایت، \fBm\fR یا \fBM\fR را برای تعیین مگابایت، \fBg\fR یا \fBG\fR را برای تعیین گیگابایت اضافه کنید\&. به‌طور پیش‌فرض، مقدار اندازه روی ۰ تنظیم شده است، به این معنی که JVM اندازه صفحات بزرگ را به‌طور خودکار انتخاب می‌کند\&. .sp مثال زیر نحوه تنظیم اندازه صفحه بزرگ روی ۴ مگابایت (MB) را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:LargePageSizeInBytes=4m\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxDirectMemorySize=\fIsize\fR .RS 4 حداکثر اندازه کل (به بایت) تخصیص‌های بافر مستقیم بسته New I/O (بسته \fBjava\&.nio\fR) را تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای نشان دادن کیلوبایت، \fBm\fR یا \fBM\fR را برای نشان دادن مگابایت، \fBg\fR یا \fBG\fR را برای نشان دادن گیگابایت اضافه کنید\&. به‌طور پیش‌فرض، مقدار اندازه روی ۰ تنظیم شده است، به این معنی که JVM اندازه تخصیص‌های بافر مستقیم NIO را به‌طور خودکار انتخاب می‌کند\&. .sp مثال‌های زیر نحوه تنظیم اندازه NIO روی ۱۰۲۴ کیلوبایت را با واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxDirectMemorySize=1m\fR \fB\-XX:MaxDirectMemorySize=1024k\fR \fB\-XX:MaxDirectMemorySize=1048576\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:NativeMemoryTracking=\fImode\fR .RS 4 حالت ردیابی مصرف حافظه بومی (native memory) ماشین مجازی جاوا (JVM) را مشخص می‌کند\&. مقادیر ممکن برای آرگومان \fImode\fR در این گزینه شامل موارد زیر است: .PP off .RS 4 مصرف حافظه بومی JVM ردیابی نمی‌شود\&. اگر گزینه \fB\-XX:NativeMemoryTracking\fR را مشخص نکنید، این رفتار پیش‌فرض است\&. .RE .PP summary .RS 4 فقط مصرف حافظه توسط زیرسیستم‌های JVM، مانند هیپ جاوا، کلاس، کد و ریسمان (thread) ردیابی می‌شود\&. .RE .PP detail .RS 4 علاوه بر ردیابی مصرف حافظه توسط زیرسیستم‌های JVM، مصرف حافظه توسط هر \fBCallSite\fR به‌طور مجزا، هر ناحیه حافظه مجازی و نواحی ثبت‌شده (committed) آن نیز ردیابی می‌شود\&. .RE .RE .PP \-XX:ObjectAlignmentInBytes=\fIalignment\fR .RS 4 تراز حافظه اشیای جاوا را (به بایت) تعیین می‌کند\&. به‌طور پیش‌فرض، مقدار روی ۸ بایت تنظیم شده است\&. مقدار مشخص‌شده باید توانی از دو بوده و در محدوده بین ۸ تا ۲۵۶ (شامل هر دو) باشد\&. این گزینه استفاده از اشاره‌گرهای فشرده (compressed pointers) را در اندازه‌های بزرگ هیپ جاوا امکان‌پذیر می‌سازد\&. .sp محدودیت اندازه هیپ به بایت به‌صورت زیر محاسبه می‌شود: .sp \fB4GB * ObjectAlignmentInBytes\fR .sp نکته: با افزایش مقدار تراز (alignment)، فضای استفاده‌نشده بین اشیا نیز افزایش می‌یابد\&. در نتیجه، ممکن است از استفاده از اشاره‌گرهای فشرده در اندازه‌های بزرگ هیپ جاوا مزیتی حاصل نشود\&. .RE .PP \-XX:OnError=\fIstring\fR .RS 4 یک دستور سفارشی یا مجموعه‌ای از دستورات جداشده با نقطه\-ویرگول (semicolon) را برای اجرا در هنگام وقوع خطای غیرقابل‌جبران تعیین می‌کند\&. اگر رشته شامل فاصله باشد، باید داخل علامت نقل‌قول قرار گیرد\&. .sp مثال زیر نشان می‌دهد چگونه می‌توان از گزینه \fB\-XX:OnError\fR برای اجرای دستور \fBgcore\fR جهت ایجاد ایمیج core و راه‌اندازی دیباگر برای اتصال به فرآیند در هنگام وقوع خطای غیرقابل‌جبران استفاده کرد (شناسه \fB%p\fR نشان‌دهنده فرآیند جاری است): .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:OnError="gcore %p;dbx \- %p"\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:OnOutOfMemoryError=\fIstring\fR .RS 4 یک دستور سفارشی یا مجموعه‌ای از دستورات جداشده با نقطه\-ویرگول را برای اجرا در زمانی که استثنای \fBOutOfMemoryError\fR برای نخستین بار پرتاب می‌شود، تعیین می‌کند\&. اگر رشته شامل فاصله باشد، باید داخل علامت نقل‌قول قرار گیرد\&. برای دیدن مثالی از رشته دستوری، به توضیحات گزینه \fB\-XX:OnError\fR مراجعه کنید\&. .RE .PP \-XX:+PerfDataSaveToFile .RS 4 در صورت فعال بودن، داده‌های باینری jstat(1) را هنگام خروج برنامه جاوا ذخیره می‌کند\&. این داده‌های باینری در فایلی با نام \fBhsperfdata_\fR\fI\fR ذخیره می‌شوند که در آن \fI\fR شناسه فرآیند برنامه جاوای اجراشده توسط شما است\&. برای نمایش داده‌های عملکردی موجود در این فایل، از \fBjstat\fR به‌صورت زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf \fBjstat \-class file:///\fR\fB\fI\fR\fR\fB/hsperfdata_\fR\fB\fI\fR\fR \fBjstat \-gc file:///\fR\fB\fI\fR\fR\fB/hsperfdata_\fR\fB\fI\fR\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+PrintCommandLineFlags .RS 4 چاپ فلگ‌های JVM که به‌صورت ارگونومیک انتخاب شده و در خط فرمان ظاهر شده‌اند را فعال می‌کند\&. دانستن مقادیر ارگونومیک تنظیم‌شده توسط JVM، مانند اندازه فضای هیپ و زباله‌روب (garbage collector) انتخاب‌شده، می‌تواند مفید باشد\&. به‌طور پیش‌فرض، این گزینه غیرفعال بوده و فلگ‌ها چاپ نمی‌شوند\&. .RE .PP \-XX:+PrintNMTStatistics .RS 4 چاپ داده‌های جمع‌آوری‌شده ردیابی حافظه بومی را در هنگام خروج JVM، در زمانی که ردیابی حافظه بومی فعال است (به \fB\-XX:NativeMemoryTracking\fR مراجعه کنید)، فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال بوده و داده‌های ردیابی حافظه بومی چاپ نمی‌شوند\&. .RE .PP \-XX:+RelaxAccessControlCheck .RS 4 میزان بررسی‌های کنترل دسترسی در اعتبارسنج را کاهش می‌دهد\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و برای کلاس‌هایی با نسخه بایت‌کد جدید نادیده گرفته می‌شود (یعنی غیرفعال در نظر گرفته می‌شود)\&. می‌توانید آن را برای کلاس‌هایی با نسخه‌های قدیمی‌تر بایت‌کد فعال کنید\&. .RE .PP \-XX:+ShowMessageBoxOnError .RS 4 نمایش یک کادر محاوره‌ای (dialog box) را در هنگام مواجهه JVM با خطای غیرقابل‌جبران فعال می‌کند\&. این کار از خروج JVM جلوگیری کرده و فرآیند را فعال نگه می‌دارد تا بتوانید یک دیباگر را برای بررسی علت خطا به آن متصل کنید\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:ThreadStackSize=\fIsize\fR .RS 4 اندازه پشته ریسمان (thread stack) را (به بایت) تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای تعیین کیلوبایت، \fBm\fR یا \fBM\fR را برای تعیین مگابایت، \fBg\fR یا \fBG\fR را برای تعیین گیگابایت اضافه کنید\&. مقدار پیش‌فرض به پلتفرم بستگی دارد: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پلتفرم Linux/ARM (نسخه ۳۲ بیتی): ۳۲۰ کیلوبایت .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پلتفرم Linux/i386 (نسخه ۳۲ بیتی): ۳۲۰ کیلوبایت .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پلتفرم Linux/x64 (نسخه ۶۴ بیتی): ۱۰۲۴ کیلوبایت .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پلتفرم OS X (نسخه ۶۴ بیتی): ۱۰۲۴ کیلوبایت .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پلتفرم Oracle Solaris/i386 (نسخه ۳۲ بیتی): ۳۲۰ کیلوبایت .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} پلتفرم Oracle Solaris/x64 (نسخه ۶۴ بیتی): ۱۰۲۴ کیلوبایت .RE .sp مثال‌های زیر نحوه تعیین اندازه پشته ریسمان را روی ۱۰۲۴ کیلوبایت با واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:ThreadStackSize=1m\fR \fB\-XX:ThreadStackSize=1024k\fR \fB\-XX:ThreadStackSize=1048576\fR .fi .if n \{\ .RE .\} این گزینه معادل \fB\-Xss\fR است\&. .RE .PP \-XX:+TraceClassLoading .RS 4 ردیابی کلاس‌ها را هنگام بارگذاری فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و کلاس‌ها ردیابی نمی‌شوند\&. .RE .PP \-XX:+TraceClassLoadingPreorder .RS 4 ردیابی همه کلاس‌های بارگذاری‌شده را به ترتیبی که به آن‌ها ارجاع داده شده است فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و کلاس‌ها ردیابی نمی‌شوند\&. .RE .PP \-XX:+TraceClassResolution .RS 4 ردیابی تفکیک‌های استخر مقادیر ثابت (constant pool resolutions) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و تفکیک‌های استخر ثابت ردیابی نمی‌شوند\&. .RE .PP \-XX:+TraceClassUnloading .RS 4 ردیابی کلاس‌ها را هنگام تخلیه شدن از حافظه (unload) فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و کلاس‌ها ردیابی نمی‌شوند\&. .RE .PP \-XX:+TraceLoaderConstraints .RS 4 ردیابی ثبت محدودیت‌های بارگذار (loader constraints recording) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و ثبت محدودیت‌های بارگذار ردیابی نمی‌شود\&. .RE .PP \-XX:+UseAltSigs .RS 4 استفاده از سیگنال‌های جایگزین به‌جای \fBSIGUSR1\fR و \fBSIGUSR2\fR را برای سیگنال‌های داخلی JVM فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و از سیگنال‌های جایگزین استفاده نمی‌شود\&. این گزینه معادل \fB\-Xusealtsigs\fR است\&. .RE .PP \-XX:\-UseBiasedLocking .RS 4 استفاده از قفل‌گذاری متمایل (biased locking) را غیرفعال می‌کند\&. برخی برنامه‌ها با حجم قابل‌توجهی از همگام‌سازی بدون رقابت (uncontended synchronization) ممکن است با فعال بودن این فلگ به بهبود سرعت چشمگیری دست یابند، در حالی که برنامه‌هایی با الگوهای قفل‌گذاری خاص ممکن است دچار افت سرعت شوند\&. برای کسب اطلاعات بیشتر درباره روش قفل‌گذاری متمایل، به مثال موجود در Java Tuning White Paper در نشانی http://www\&.oracle\&.com/technetwork/java/tuning\-139912\&.html#section4\&.2\&.5 مراجعه کنید\&. .sp به‌طور پیش‌فرض، این گزینه فعال است\&. .RE .PP \-XX:\-UseCompressedOops .RS 4 استفاده از اشاره‌گرهای فشرده (compressed pointers) را غیرفعال می‌کند\&. به‌طور پیش‌فرض، این گزینه فعال است و زمانی که اندازه هیپ جاوا کمتر از ۳۲ گیگابایت باشد، اشاره‌گرهای فشرده به کار گرفته می‌شوند\&. زمانی که این قابلیت فعال است، ارجاعات اشیا به‌جای اشاره‌گرهای ۶۴ بیتی به‌صورت آفست‌های ۳۲ بیتی نمایش داده می‌شوند که معمولاً هنگام اجرای برنامه با اندازه‌های هیپ جاوا کمتر از ۳۲ گیگابایت، کارایی را افزایش می‌دهد\&. این گزینه فقط برای JVMهای ۶۴ بیتی کار می‌کند\&. .sp همچنین در اندازه‌های هیپ جاوا بزرگ‌تر از ۳۲ گیگابایت نیز امکان استفاده از اشاره‌گرهای فشرده وجود دارد\&. به گزینه \fB\-XX:ObjectAlignmentInBytes\fR مراجعه کنید\&. .RE .PP \-XX:+UseHugeTLBFS .RS 4 این گزینه برای لینوکس معادل مشخص کردن \fB\-XX:+UseLargePages\fR است\&. این گزینه به‌طور پیش‌فرض غیرفعال است\&. این گزینه تمام صفحات بزرگ را از ابتدا (up\-front) در زمان رزرو حافظه از پیش تخصیص می‌دهد؛ در نتیجه JVM نمی‌تواند نواحی حافظه صفحات بزرگ را به‌طور پویا بزرگ یا کوچک کند؛ اگر چنین رفتاری مد نظرتان است به \fB\-XX:UseTransparentHugePages\fR مراجعه کنید\&. .sp برای اطلاعات بیشتر، بخش «صفحات بزرگ (Large Pages)» را ببینید\&. .RE .PP \-XX:+UseLargePages .RS 4 استفاده از حافظه صفحات بزرگ (large page memory) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و از حافظه صفحات بزرگ استفاده نمی‌شود\&. .sp برای اطلاعات بیشتر، بخش «صفحات بزرگ (Large Pages)» را ببینید\&. .RE .PP \-XX:+UseMembar .RS 4 صدور موانع حافظه (membars) در هنگام انتقال وضعیت ریسمان‌ها را فعال می‌کند\&. این گزینه به‌طور پیش‌فرض در تمام پلتفرم‌ها به جز سرورهای ARM غیرفعال است، که در آن سرورها فعال می‌باشد\&. (توصیه می‌شود این گزینه را در سرورهای ARM غیرفعال نکنید\&.) .RE .PP \-XX:+UsePerfData .RS 4 قابلیت \fBperfdata\fR را فعال می‌کند\&. این گزینه به‌طور پیش‌فرض فعال است تا امکان نظارت بر JVM و تست عملکرد فراهم باشد\&. غیرفعال کردن آن مانع از ایجاد دایرکتوری‌های \fBhsperfdata_userid\fR می‌شود\&. برای غیرفعال کردن قابلیت \fBperfdata\fR، گزینه \fB\-XX:\-UsePerfData\fR را مشخص کنید\&. .RE .PP \-XX:+UseTransparentHugePages .RS 4 در لینوکس، استفاده از صفحات بزرگی را که می‌توانند به‌طور پویا بزرگ یا کوچک شوند فعال می‌کند\&. این گزینه به‌طور پیش‌فرض غیرفعال است\&. ممکن است با صفحات بزرگ شفاف (transparent huge pages) با مشکلات عملکردی مواجه شوید زیرا سیستم‌عامل برای ایجاد صفحات بزرگ، صفحات دیگر را جابه‌جا می‌کند؛ این گزینه برای آزمایش تجربی ارائه شده است\&. .sp برای اطلاعات بیشتر، بخش «صفحات بزرگ (Large Pages)» را ببینید\&. .RE .PP \-XX:+AllowUserSignalHandlers .RS 4 امکان نصب گرداننده‌های سیگنال (signal handlers) توسط برنامه را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و برنامه اجازه نصب گرداننده‌های سیگنال را ندارد\&. .RE .SS "گزینه‌های پیشرفته کامپایلر JIT (Advanced JIT Compiler Options)" .PP این گزینه‌ها کامپایل پویا درجا یا در‌زمان‌نیاز (JIT: Just\-in\-Time) را که توسط Java HotSpot VM انجام می‌شود، کنترل می‌کنند\&. .PP \-XX:+AggressiveOpts .RS 4 استفاده از قابلیت‌های بهینه‌سازی تهاجمی کارایی را فعال می‌کند که انتظار می‌رود در نسخه‌های آینده به صورت پیش‌فرض درآیند\&. به طور پیش‌فرض، این گزینه غیرفعال است و از ویژگی‌های آزمایشی بهبود کارایی استفاده نمی‌شود\&. .RE .PP \-XX:AllocateInstancePrefetchLines=\fIlines\fR .RS 4 تعداد خطوطی را که باید پیشاپیش اشاره‌گر تخصیص نمونه واکشی اولیه (prefetch) شوند، تنظیم می‌کند\&. به طور پیش‌فرض، تعداد خطوط واکشی اولیه برابر با 1 تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:AllocateInstancePrefetchLines=1\fR .fi .if n \{\ .RE .\} تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:AllocatePrefetchDistance=\fIsize\fR .RS 4 اندازه (به بایت) فاصله واکشی اولیه (prefetch) برای تخصیص اشیاء را تعیین می‌کند\&. حافظه‌ای که قرار است با مقادیر اشیاء جدید نوشته شود، با شروع از آدرس آخرین شیء تخصیص‌یافته تا این فاصله پیشاپیش واکشی می‌شود\&. هر رشته (thread) جاوا نقطه تخصیص مخصوص به خود را دارد\&. .sp مقادیر منفی نشان‌دهنده آن است که فاصله واکشی اولیه بر اساس پلتفرم انتخاب می‌شود\&. مقادیر مثبت، بایت‌های مورد نظر برای واکشی اولیه هستند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. مقدار پیش‌فرض روی \-1 تنظیم شده است\&. .sp مثال زیر نحوه تنظیم فاصله واکشی اولیه روی 1024 بایت را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:AllocatePrefetchDistance=1024\fR .fi .if n \{\ .RE .\} تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:AllocatePrefetchInstr=\fIinstruction\fR .RS 4 دستورالعمل واکشی اولیه را برای واکشی پیشاپیش اشاره‌گر تخصیص تعیین می‌کند\&. تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. مقادیر ممکن از 0 تا 3 هستند\&. دستورالعمل‌های واقعی متناظر با این مقادیر به پلتفرم بستگی دارند\&. به طور پیش‌فرض، دستورالعمل واکشی اولیه روی 0 تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:AllocatePrefetchInstr=0\fR .fi .if n \{\ .RE .\} تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:AllocatePrefetchLines=\fIlines\fR .RS 4 تعداد خطوط حافظه نهان (cache lines) را برای بارگذاری پس از آخرین تخصیص شیء با استفاده از دستورالعمل‌های واکشی اولیه تولید شده در کد کامپایل‌شده تنظیم می‌کند\&. در صورتی که آخرین شیء تخصیص‌یافته یک نمونه (instance) باشد، مقدار پیش‌فرض 1 است و اگر یک آرایه (array) باشد، مقدار پیش‌فرض 3 است\&. .sp مثال زیر نحوه تنظیم تعداد خطوط حافظه نهان بارگذاری‌شده روی 5 را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:AllocatePrefetchLines=5\fR .fi .if n \{\ .RE .\} تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:AllocatePrefetchStepSize=\fIsize\fR .RS 4 اندازه گام (به بایت) را برای دستورالعمل‌های متوالی واکشی اولیه تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. به طور پیش‌فرض، اندازه گام برابر با 16 بایت تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:AllocatePrefetchStepSize=16\fR .fi .if n \{\ .RE .\} تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:AllocatePrefetchStyle=\fIstyle\fR .RS 4 سبک کد تولیدشده برای دستورالعمل‌های واکشی اولیه را تعیین می‌کند\&. آرگومان \fIstyle\fR یک عدد صحیح از 0 تا 3 است: .PP 0 .RS 4 دستورالعمل‌های واکشی اولیه تولید نشوند\&. .RE .PP 1 .RS 4 دستورالعمل‌های واکشی اولیه پس از هر تخصیص اجرا شوند\&. این پارامتر پیش‌فرض است\&. .RE .PP 2 .RS 4 از اشاره‌گر نشان سطح (watermark) در بلوک تخصیص محلی رشته (TLAB) برای تعیین زمان اجرای دستورالعمل‌های واکشی اولیه استفاده شود\&. .RE .PP 3 .RS 4 استفاده از دستورالعمل BIS در پردازنده‌های SPARC برای واکشی اولیه تخصیص\&. .RE .sp تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:+BackgroundCompilation .RS 4 کامپایل در پس‌زمینه را فعال می‌کند\&. این گزینه به صورت پیش‌فرض فعال است\&. برای غیرفعال کردن کامپایل در پس‌زمینه، گزینه \fB\-XX:\-BackgroundCompilation\fR را مشخص کنید (این کار معادل مشخص کردن \fB\-Xbatch\fR است)\&. .RE .PP \-XX:CICompilerCount=\fIthreads\fR .RS 4 تعداد رشته‌های کامپایلر را برای استفاده در کامپایل تنظیم می‌کند\&. به طور پیش‌فرض، تعداد رشته‌ها برای JVM سرور برابر با 2 و برای JVM کلاینت برابر با 1 تنظیم شده است، و در صورت استفاده از کامپایل لایه‌ای (tiered compilation)، متناسب با تعداد هسته‌ها مقیاس‌بندی می‌شود\&. مثال زیر نحوه تنظیم تعداد رشته‌ها روی 2 را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CICompilerCount=2\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:CodeCacheMinimumFreeSpace=\fIsize\fR .RS 4 حداقل فضای خالی (به بایت) مورد نیاز برای کامپایل را تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. زمانی که کمتر از حداقل فضای خالی باقی بماند، کامپایل متوقف می‌شود\&. به طور پیش‌فرض، این گزینه روی 500 کیلوبایت تنظیم شده است\&. مثال زیر نحوه تنظیم حداقل فضای خالی روی 1024 مگابایت را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CodeCacheMinimumFreeSpace=1024m\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:CompileCommand=\fIcommand\fR,\fImethod\fR[,\fIoption\fR] .RS 4 دستوری را برای اعمال روی یک متد مشخص می‌کند\&. به عنوان مثال، برای مستثنی کردن متد \fBindexOf()\fR از کلاس \fBString\fR از کامپایل شدن، از دستور زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileCommand=exclude,java/lang/String\&.indexOf\fR .fi .if n \{\ .RE .\} توجه داشته باشید که نام کامل کلاس شامل تمام بسته‌ها و زیربسته‌ها که با اسلش (\fB/\fR) از یکدیگر جدا شده‌اند مشخص می‌شود\&. برای عملیات برش و چسباندن (cut and paste) آسان‌تر، همچنین می‌توانید از قالب نام متد تولیدشده توسط گزینه‌های \fB\-XX:+PrintCompilation\fR و \fB\-XX:+LogCompilation\fR استفاده نمایید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileCommand=exclude,java\&.lang\&.String::indexOf\fR .fi .if n \{\ .RE .\} اگر متد بدون امضا (signature) مشخص شود، دستور روی تمامی متدهایی با نام مشخص‌شده اعمال خواهد شد\&. با این حال، می‌توانید امضای متد را نیز در قالب فایل کلاس مشخص کنید\&. در این حالت، باید آرگومان‌ها را درون علامت‌های نقل‌قول قرار دهید، زیرا در غیر این صورت شل کاراکتر نقطه‌ویرگول را به عنوان پایان دستور در نظر می‌گیرد\&. به عنوان مثال، اگر می‌خواهید فقط متد \fBindexOf(String)\fR از کلاس \fBString\fR را از کامپایل شدن مستثنی کنید، از دستور زیر استفاده نمایید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileCommand="exclude,java/lang/String\&.indexOf,(Ljava/lang/String;)I"\fR .fi .if n \{\ .RE .\} همچنین می‌توانید از علامت ستاره (*) به عنوان نویسه عمومی (wildcard) برای نام‌های کلاس و متد استفاده کنید\&. برای مثال، جهت مستثنی کردن تمامی متدهای \fBindexOf()\fR در تمام کلاس‌ها از کامپایل شدن، دستور زیر را به کار ببرید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileCommand=exclude,*\&.indexOf\fR .fi .if n \{\ .RE .\} کاماها و نقطه‌ها نام‌های مستعار برای فاصله‌ها هستند که ارسال دستورات کامپایلر را از طریق شل آسان‌تر می‌کنند\&. شما می‌توانید با قرار دادن آرگومان درون علامت‌های نقل‌قول، آرگومان‌ها را با استفاده از فاصله به عنوان جداکننده به \fB\-XX:CompileCommand\fR ارسال کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileCommand="exclude java/lang/String indexOf"\fR .fi .if n \{\ .RE .\} توجه داشته باشید که پس از تجزیه دستورات ارسال‌شده در خط فرمان با استفاده از گزینه‌های \fB\-XX:CompileCommand\fR، کامپایلر JIT سپس دستورات را از فایل \fB\&.hotspot_compiler\fR می‌خواند\&. می‌توانید دستوراتی را به این فایل اضافه کنید یا با استفاده از گزینه \fB\-XX:CompileCommandFile\fR فایل متفاوتی را مشخص نمایید\&. .sp برای افزودن چندین دستور، می‌توانید گزینه \fB\-XX:CompileCommand\fR را چندین بار مشخص کنید، یا هر آرگومان را با جداکننده خط جدید (\fB\en\fR) جدا سازید\&. دستورات زیر در دسترس هستند: .PP break .RS 4 تنظیم یک نقطه توقف (breakpoint) هنگام دیباگ JVM برای توقف در آغاز کامپایل متد مشخص‌شده\&. .RE .PP compileonly .RS 4 مستثنی کردن تمام متدها از کامپایل به جز متد مشخص‌شده\&. به عنوان یک جایگزین، می‌توانید از گزینه \fB\-XX:CompileOnly\fR استفاده کنید که امکان تعیین چندین متد را فراهم می‌سازد\&. .RE .PP dontinline .RS 4 جلوگیری از درون‌خطی‌سازی (inlining) متد مشخص‌شده\&. .RE .PP exclude .RS 4 مستثنی کردن متد مشخص‌شده از فرایند کامپایل\&. .RE .PP help .RS 4 چاپ یک پیام راهنما برای گزینه \fB\-XX:CompileCommand\fR\&. .RE .PP inline .RS 4 تلاش برای درون‌خطی کردن متد مشخص‌شده\&. .RE .PP log .RS 4 مستثنی کردن ثبت گزارش کامپایل (با گزینه \fB\-XX:+LogCompilation\fR) برای تمام متدها به جز متد مشخص‌شده\&. به طور پیش‌فرض، ثبت گزارش برای تمام متدهای کامپایل‌شده انجام می‌شود\&. .RE .PP option .RS 4 این دستور می‌تواند برای ارسال یک گزینه کامپایل JIT به متد مشخص‌شده به جای آخرین آرگومان (\fIoption\fR) استفاده شود\&. گزینه کامپایل در انتهای دستور، پس از نام متد تنظیم می‌شود\&. به عنوان مثال، برای فعال کردن گزینه \fBBlockLayoutByFrequency\fR برای متد \fBappend()\fR از کلاس \fBStringBuffer\fR، دستور زیر را به کار ببرید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileCommand=option,java/lang/StringBuffer\&.append,BlockLayoutByFrequency\fR .fi .if n \{\ .RE .\} می‌توانید چندین گزینه کامپایل را که با کاما یا فاصله از هم جدا شده‌اند، مشخص کنید\&. .RE .PP print .RS 4 چاپ کد اسمبلی تولیدشده پس از کامپایل متد مشخص‌شده\&. .RE .PP quiet .RS 4 دستورات کامپایل را چاپ نکن\&. به طور پیش‌فرض، دستوراتی که با گزینه \fB\-XX:CompileCommand\fR مشخص می‌کنید چاپ می‌شوند؛ برای مثال، اگر متد \fBindexOf()\fR از کلاس \fBString\fR را از کامپایل مستثنی کنید، عبارت زیر در خروجی استاندارد چاپ خواهد شد: .sp .if n \{\ .RS 4 .\} .nf \fBCompilerOracle: exclude java/lang/String\&.indexOf\fR .fi .if n \{\ .RE .\} می‌توانید با مشخص کردن گزینه \fB\-XX:CompileCommand=quiet\fR پیش از سایر گزینه‌های \fB\-XX:CompileCommand\fR از چاپ این موارد جلوگیری نمایید\&. .RE .RE .PP \-XX:CompileCommandFile=\fIfilename\fR .RS 4 فایلی را که دستورات کامپایلر JIT از آن خوانده می‌شوند تعیین می‌کند\&. به طور پیش‌فرض، فایل \fB\&.hotspot_compiler\fR برای ذخیره دستورات اعمال‌شده توسط کامپایلر JIT استفاده می‌شود\&. .sp هر خط در فایل دستورات نشان‌دهنده یک دستور، یک نام کلاس و یک نام متد است که دستور برای آن استفاده می‌شود\&. برای مثال، این خط کد اسمبلی متد \fBtoString()\fR از کلاس \fBString\fR را چاپ می‌کند: .sp .if n \{\ .RS 4 .\} .nf \fBprint java/lang/String toString\fR .fi .if n \{\ .RE .\} برای کسب اطلاعات بیشتر در مورد تعیین دستورات اعمالی کامپایلر JIT روی متدها، به گزینه \fB\-XX:CompileCommand\fR مراجعه فرمایید\&. .RE .PP \-XX:CompileOnly=\fImethods\fR .RS 4 فهرستی از متدها (جداشده با کاما) را که کامپایل باید به آن‌ها محدود شود تنظیم می‌کند\&. تنها متدهای مشخص‌شده کامپایل خواهند شد\&. هر متد را با نام کامل کلاس (شامل بسته‌ها و زیربسته‌ها) مشخص کنید\&. برای مثال، جهت کامپایل انحصاری متد \fBlength()\fR از کلاس \fBString\fR و متد \fBsize()\fR از کلاس \fBList\fR، دستور زیر را به کار ببرید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileOnly=java/lang/String\&.length,java/util/List\&.size\fR .fi .if n \{\ .RE .\} توجه داشته باشید که نام کامل کلاس شامل تمام بسته‌ها و زیربسته‌ها که با اسلش (\fB/\fR) از یکدیگر جدا شده‌اند مشخص می‌شود\&. برای عملیات برش و چسباندن آسان‌تر، همچنین می‌توانید از قالب نام متد تولیدشده توسط گزینه‌های \fB\-XX:+PrintCompilation\fR و \fB\-XX:+LogCompilation\fR استفاده نمایید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileOnly=java\&.lang\&.String::length,java\&.util\&.List::size\fR .fi .if n \{\ .RE .\} اگرچه نویسه‌های عمومی پشتیبانی نمی‌شوند، می‌توانید تنها نام کلاس یا بسته را مشخص کنید تا تمام متدهای آن کلاس یا بسته کامپایل شوند، یا صرفاً نام متد را مشخص نمایید تا متدهایی با این نام در هر کلاسی کامپایل شوند: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileOnly=java/lang/String\fR \fB\-XX:CompileOnly=java/lang\fR \fB\-XX:CompileOnly=\&.length\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:CompileThreshold=\fIinvocations\fR .RS 4 تعداد فراخوانی‌های متد در حالت تفسیری را پیش از کامپایل تعیین می‌کند\&. به طور پیش‌فرض، در JVM سرور، کامپایلر JIT تعداد 10,000 فراخوانی تفسیری متد را برای جمع‌آوری اطلاعات به منظور کامپایل بهینه انجام می‌دهد\&. برای JVM کلاینت، تنظیم پیش‌فرض 1,500 فراخوانی است\&. در صورت فعال بودن کامپایل لایه‌ای (tiered compilation)، این گزینه نادیده گرفته می‌شود؛ به گزینه \fB\-XX:+TieredCompilation\fR مراجعه فرمایید\&. مثال زیر نحوه تنظیم تعداد فراخوانی‌های تفسیری متد روی 5000 را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CompileThreshold=5000\fR .fi .if n \{\ .RE .\} می‌توانید تفسیر متدهای جاوا پیش از کامپایل را با مشخص کردن گزینه \fB\-Xcomp\fR به طور کامل غیرفعال کنید\&. .RE .PP \-XX:+DoEscapeAnalysis .RS 4 استفاده از تحلیل فرار (escape analysis) را فعال می‌کند\&. این گزینه به صورت پیش‌فرض فعال است\&. برای غیرفعال کردن تحلیل فرار، گزینه \fB\-XX:\-DoEscapeAnalysis\fR را مشخص نمایید\&. تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:InitialCodeCacheSize=\fIsize\fR .RS 4 اندازه اولیه حافظه نهان کد (به بایت) را تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. مقدار پیش‌فرض روی 500 کیلوبایت تنظیم شده است\&. اندازه اولیه حافظه نهان کد نباید کمتر از حداقل اندازه صفحه حافظه سیستم باشد\&. مثال زیر نحوه تنظیم اندازه اولیه حافظه نهان کد روی 32 کیلوبایت را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:InitialCodeCacheSize=32k\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+Inline .RS 4 درون‌خطی‌سازی متدها (method inlining) را فعال می‌کند\&. این گزینه برای افزایش کارایی به صورت پیش‌فرض فعال است\&. برای غیرفعال کردن درون‌خطی‌سازی متدها، گزینه \fB\-XX:\-Inline\fR را مشخص کنید\&. .RE .PP \-XX:InlineSmallCode=\fIsize\fR .RS 4 حداکثر اندازه کد (به بایت) را برای متدهای کامپایل‌شده‌ای که باید درون‌خطی شوند تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. تنها متدهای کامپایل‌شده‌ای با اندازه کوچک‌تر از مقدار مشخص‌شده درون‌خطی خواهند شد\&. به طور پیش‌فرض، حداکثر اندازه کد برابر با 1000 بایت تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:InlineSmallCode=1000\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+LogCompilation .RS 4 ثبت گزارش فعالیت‌های کامپایل را در فایلی با نام \fBhotspot\&.log\fR در دایرکتوری کاری جاری فعال می‌کند\&. می‌توانید مسیر و نام متفاوتی را برای فایل گزارش با استفاده از گزینه \fB\-XX:LogFile\fR مشخص نمایید\&. .sp به طور پیش‌فرض، این گزینه غیرفعال است و فعالیت‌های کامپایل ثبت نمی‌شوند\&. گزینه \fB\-XX:+LogCompilation\fR باید به همراه گزینه \fB\-XX:UnlockDiagnosticVMOptions\fR استفاده شود که قفل گزینه‌های عیب‌یابی JVM را باز می‌کند\&. .sp می‌توانید با استفاده از گزینه \fB\-XX:+PrintCompilation\fR خروجی تشخیصی مشروح را فعال کنید که با هر بار کامپایل یک متد، پیامی را در کنسول چاپ می‌کند\&. .RE .PP \-XX:MaxInlineSize=\fIsize\fR .RS 4 حداکثر اندازه بایت‌کد (به بایت) یک متد را برای درون‌خطی شدن تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. به طور پیش‌فرض، حداکثر اندازه بایت‌کد برابر با 35 بایت تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxInlineSize=35\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxNodeLimit=\fInodes\fR .RS 4 حداکثر تعداد گره‌های مورد استفاده در طول کامپایل یک متد منفرد را تعیین می‌کند\&. به طور پیش‌فرض، حداکثر تعداد گره‌ها برابر با 65,000 تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxNodeLimit=65000\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxTrivialSize=\fIsize\fR .RS 4 حداکثر اندازه بایت‌کد (به بایت) یک متد ساده (trivial) را برای درون‌خطی شدن تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. به طور پیش‌فرض، حداکثر اندازه بایت‌کد یک متد ساده برابر با 6 بایت تنظیم شده است: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxTrivialSize=6\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+OptimizeStringConcat .RS 4 بهینه‌سازی عملیات الحاق رشته‌های \fBString\fR را فعال می‌کند\&. این گزینه به صورت پیش‌فرض فعال است\&. برای غیرفعال کردن بهینه‌سازی عملیات الحاق رشته‌های \fBString\fR، گزینه \fB\-XX:\-OptimizeStringConcat\fR را مشخص نمایید\&. تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:+PrintAssembly .RS 4 چاپ کد اسمبلی برای متدهای دارای بایت‌کد و بومی (native) را با استفاده از کتابخانه خارجی \fBdisassembler\&.so\fR فعال می‌کند\&. این قابلیت به شما امکان می‌دهد کد تولیدشده را مشاهده کنید، که ممکن است به بررسی و عیب‌یابی مشکلات کارایی کمک کند\&. .sp به طور پیش‌فرض، این گزینه غیرفعال است و کد اسمبلی چاپ نمی‌شود\&. گزینه \fB\-XX:+PrintAssembly\fR باید به همراه گزینه \fB\-XX:UnlockDiagnosticVMOptions\fR استفاده شود که قفل گزینه‌های تشخیصی JVM را باز می‌کند\&. .RE .PP \-XX:+PrintCompilation .RS 4 با چاپ یک پیام در کنسول با هر بار کامپایل شدن یک متد، خروجی تشخیصی مشروح را از JVM فعال می‌سازد\&. این قابلیت به شما امکان می‌دهد متدهایی را که واقعاً کامپایل می‌شوند مشاهده نمایید\&. به طور پیش‌فرض، این گزینه غیرفعال است و خروجی تشخیصی چاپ نمی‌شود\&. .sp همچنین می‌توانید با استفاده از گزینه \fB\-XX:+LogCompilation\fR فعالیت‌های کامپایل را در یک فایل ثبت کنید\&. .RE .PP \-XX:+PrintInlining .RS 4 چاپ تصمیمات مربوط به درون‌خطی‌سازی (inlining) را فعال می‌کند\&. این ویژگی شما را قادر می‌سازد تا ببینید کدام متدها در حال درون‌خطی شدن هستند\&. .sp به طور پیش‌فرض، این گزینه غیرفعال است و اطلاعات درون‌خطی‌سازی چاپ نمی‌شود\&. گزینه \fB\-XX:+PrintInlining\fR باید به همراه گزینه \fB\-XX:UnlockDiagnosticVMOptions\fR استفاده شود که گزینه‌های تشخیصی JVM را فعال می‌کند\&. .RE .PP \-XX:ReservedCodeCacheSize=\fIsize\fR .RS 4 حداکثر اندازه حافظه نهان کد (به بایت) را برای کدهای کامپایل‌شده توسط JIT تعیین می‌کند\&. حرف \fBk\fR یا \fBK\fR را برای مشخص کردن کیلوبایت، \fBm\fR یا \fBM\fR را برای مگابایت، و \fBg\fR یا \fBG\fR را برای گیگابایت اضافه کنید\&. حداکثر اندازه پیش‌فرض حافظه نهان کد برابر با 240 مگابایت است؛ اگر کامپایل لایه‌ای را با گزینه \fB\-XX:\-TieredCompilation\fR غیرفعال کنید، اندازه پیش‌فرض برابر با 48 مگابایت خواهد بود\&. این گزینه محدودیتی معادل 2 گیگابایت دارد؛ در غیر این صورت، خطا ایجاد خواهد شد\&. حداکثر اندازه حافظه نهان کد نباید کمتر از اندازه اولیه حافظه نهان کد باشد؛ به گزینه \fB\-XX:InitialCodeCacheSize\fR مراجعه فرمایید\&. این گزینه معادل با \fB\-Xmaxjitcodesize\fR است\&. .RE .PP \-XX:RTMAbortRatio=\fIabort_ratio\fR .RS 4 نسبت سقط (لغو) RTM به عنوان درصدی (%) از کل تراکنش‌های RTM اجرا شده مشخص می‌شود\&. اگر تعداد تراکنش‌های سقط‌شده بیشتر از این نسبت شود، کد کامپایل‌شده از حالت بهینه‌سازی خارج (deoptimized) خواهد شد\&. این نسبت زمانی استفاده می‌شود که گزینه \fB\-XX:+UseRTMDeopt\fR فعال باشد\&. مقدار پیش‌فرض این گزینه 50 است\&. این بدان معناست که در صورت سقط شدن 50% از کل تراکنش‌ها، کد کامپایل‌شده deoptimize خواهد شد\&. .RE .PP \-XX:RTMRetryCount=\fInumber_of_retries\fR .RS 4 کد قفل‌گذاری RTM، در هنگام سقط شدن یا مشغول بودن، پیش از بازگشت به سازوکار قفل‌گذاری عادی، به تعداد دفعات مشخص‌شده توسط این گزینه مجدداً تلاش خواهد کرد\&. مقدار پیش‌فرض این گزینه 5 است\&. گزینه \fB\-XX:UseRTMLocking\fR باید فعال باشد\&. .RE .PP \-XX:\-TieredCompilation .RS 4 استفاده از کامپایل لایه‌ای (tiered compilation) را غیرفعال می‌کند\&. به طور پیش‌فرض، این گزینه فعال است\&. تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:+UseAES .RS 4 دستورالعمل‌های ذاتی (intrinsics) سخت‌افزاری AES را برای سخت‌افزارهای Intel، AMD و SPARC فعال می‌کند\&. سخت‌افزارهای Intel Westmere (سال 2010 و جدیدتر)، AMD Bulldozer (سال 2011 و جدیدتر) و SPARC (مدل T4 و جدیدتر) پشتیبانی می‌شوند\&. گزینه UseAES همراه با UseAESIntrinsics استفاده می‌شود\&. .RE .PP \-XX:+UseAESIntrinsics .RS 4 فلگ‌های UseAES و UseAESIntrinsics به طور پیش‌فرض فعال هستند و تنها برای نسخه‌های 32 بیتی و 64 بیتی Java HotSpot Server VM پشتیبانی می‌شوند\&. برای غیرفعال کردن توابع ذاتی سخت‌افزاری AES، عبارت \fB\-XX:\-UseAES \-XX:\-UseAESIntrinsics\fR را مشخص نمایید\&. به عنوان مثال، برای فعال کردن سخت‌افزاری AES، از فلگ‌های زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:+UseAES \-XX:+UseAESIntrinsics\fR .fi .if n \{\ .RE .\} برای پشتیبانی از فلگ‌های UseAES و UseAESIntrinsics در نسخه‌های 32 بیتی و 64 بیتی، از گزینه \fB\-server\fR جهت انتخاب Java HotSpot Server VM استفاده کنید\&. این فلگ‌ها در Client VM پشتیبانی نمی‌شوند\&. .RE .PP \-XX:+UseCodeCacheFlushing .RS 4 تخلیه و پاک‌سازی حافظه نهان کد را پیش از خاموش شدن کامپایلر فعال می‌کند\&. این گزینه به صورت پیش‌فرض فعال است\&. برای غیرفعال کردن تخلیه حافظه نهان کد پیش از خاموش شدن کامپایلر، گزینه \fB\-XX:\-UseCodeCacheFlushing\fR را مشخص کنید\&. .RE .PP \-XX:+UseCondCardMark .RS 4 بررسی اینکه آیا کارت از قبل علامت‌گذاری شده است یا خیر را قبل از به‌روزرسانی جدول کارت فعال می‌سازد\&. این گزینه به طور پیش‌فرض غیرفعال است و فقط باید در سیستم‌های دارای چند سوکت پردازنده استفاده شود، جایی که کارایی برنامه‌های جاوا را که به شدت متکی به عملیات همزمان هستند، افزایش می‌دهد\&. تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .PP \-XX:+UseRTMDeopt .RS 4 قفل‌گذاری RTM را بسته به نسبت سقط به صورت خودکار تنظیم می‌کند\&. این نسبت توسط گزینه \fB\-XX:RTMAbortRatio\fR مشخص می‌شود\&. اگر تعداد تراکنش‌های سقط‌شده از نسبت سقط فراتر رود، متد حاوی قفل deoptimize شده و با تمام قفل‌ها به عنوان قفل‌های عادی مجدداً کامپایل خواهد شد\&. این گزینه به طور پیش‌فرض غیرفعال است\&. گزینه \fB\-XX:+UseRTMLocking\fR باید فعال باشد\&. .RE .PP \-XX:+UseRTMLocking .RS 4 کد قفل‌گذاری حافظه تراکنشی محدود (RTM: Restricted Transactional Memory) را برای تمام قفل‌های متورم (inflated locks) با سازوکار قفل‌گذاری عادی به عنوان گرداننده پشتیبان تولید می‌کند\&. این گزینه به طور پیش‌فرض غیرفعال است\&. گزینه‌های مربوط به RTM فقط برای Java HotSpot Server VM در پردازنده‌های x86 که از الحاقات همگام‌سازی تراکنشی (TSX) پشتیبانی می‌کنند، در دسترس هستند\&. .sp فناوری RTM بخشی از TSX اینتل است که یک الحاق به مجموعه دستورالعمل‌های x86 بوده و ایجاد برنامه‌های چندرشته‌ای را تسهیل می‌بخشد\&. فناوری RTM دستورالعمل‌های جدید \fBXBEGIN\fR، \fBXABORT\fR، \fBXEND\fR و \fBXTEST\fR را معرفی می‌کند\&. دستورالعمل‌های \fBXBEGIN\fR و \fBXEND\fR مجموعه‌ای از دستورالعمل‌ها را برای اجرا به عنوان یک تراکنش در بر می‌گیرند\&. اگر در حین اجرای تراکنش هیچ تداخلی رخ ندهد، تغییرات حافظه و ثبات‌ها (registers) با هم در دستورالعمل \fBXEND\fR ثبت (commit) می‌شوند\&. از دستورالعمل \fBXABORT\fR می‌توان برای سقط صریح یک تراکنش و از دستورالعمل \fBXEND\fR برای بررسی اینکه آیا مجموعه‌ای از دستورالعمل‌ها درون یک تراکنش اجرا می‌شوند یا خیر، استفاده کرد\&. .sp قفل روی یک تراکنش زمانی متورم (inflated) می‌شود که رشته دیگری تلاش کند به همان تراکنش دسترسی یابد، که در نتیجه رشته‌ای را که در ابتدا درخواست دسترسی به تراکنش را نداشته است مسدود می‌کند\&. فناوری RTM نیازمند آن است که مجموعه‌ای از عملیات پشتیبان در صورت سقط یا شکست یک تراکنش تعیین شود\&. یک قفل RTM قفلی است که به سیستم TSX واگذار شده است\&. .sp فناوری RTM کارایی را برای قفل‌های بسیار رقابتی با تداخل کم در یک ناحیه بحرانی (critical region، کدی که بیش از یک رشته نباید همزمان به آن دسترسی داشته باشد) بهبود می‌بخشد\&. همچنین RTM کارایی قفل‌گذاری درشت‌دانه (coarse-grain locking) را که معمولاً در برنامه‌های چندرشته‌ای عملکرد خوبی ندارد، بهبود می‌بخشد\&. (قفل‌گذاری درشت‌دانه راهبرد نگه داشتن قفل‌ها برای مدت طولانی به منظور به حداقل رساندن بار اضافی ناشی از گرفتن و آزادسازی قفل است، در حالی که قفل‌گذاری ریزدانه (fine-grained locking) راهبرد تلاش برای دستیابی به حداکثر همزمانی با قفل کردن تنها در زمان نیاز و آزادسازی در سریع‌ترین زمان ممکن است\&.) همچنین، برای قفل‌های با رقابت کم که توسط رشته‌های مختلف استفاده می‌شوند، RTM می‌تواند اشتراک کاذب خط حافظه نهان (false cache line sharing) را که به عنوان پینگ‌پنگ خط حافظه نهان نیز شناخته می‌شود، کاهش دهد\&. این حالت زمانی رخ می‌دهد که چندین رشته از پردازنده‌های مختلف به منابع متفاوتی دسترسی پیدا می‌کنند، اما این منابع از یک خط حافظه نهان مشترک استفاده می‌کنند\&. در نتیجه، پردازنده‌ها مکرراً خطوط حافظه نهان پردازنده‌های دیگر را باطل می‌کنند که آن‌ها را مجبور می‌سازد به جای حافظه نهان، اطلاعات را از حافظه اصلی بخوانند\&. .RE .PP \-XX:+UseSHA .RS 4 دستورالعمل‌های ذاتی مبتنی بر سخت‌افزار را برای توابع درهم‌سازی رمزنگاری SHA در سخت‌افزار SPARC فعال می‌کند\&. \fBUseSHA\fR همراه با گزینه‌های \fBUseSHA1Intrinsics\fR، \fBUseSHA256Intrinsics\fR و \fBUseSHA512Intrinsics\fR استفاده می‌شود\&. .sp فلگ‌های \fBUseSHA\fR و \fBUseSHA*Intrinsics\fR به طور پیش‌فرض فعال هستند و تنها برای نسخه 64 بیتی Java HotSpot Server VM روی SPARC T4 و جدیدتر پشتیبانی می‌شوند\&. .sp این قابلیت تنها در صورت استفاده از ارائه‌دهنده \fBsun\&.security\&.provider\&.Sun\fR برای عملیات SHA کاربرد دارد\&. .sp برای غیرفعال کردن تمامی توابع ذاتی سخت‌افزاری SHA، گزینه \fB\-XX:\-UseSHA\fR را مشخص کنید\&. برای غیرفعال کردن تنها یک تابع ذاتی خاص SHA، از گزینه متناظر مربوطه استفاده نمایید؛ برای مثال: \fB\-XX:\-UseSHA256Intrinsics\fR\&. .RE .PP \-XX:+UseSHA1Intrinsics .RS 4 توابع ذاتی را برای تابع درهم‌سازی رمزنگاری SHA\-1 فعال می‌کند\&. .RE .PP \-XX:+UseSHA256Intrinsics .RS 4 توابع ذاتی را برای توابع درهم‌سازی رمزنگاری SHA\-224 و SHA\-256 فعال می‌کند\&. .RE .PP \-XX:+UseSHA512Intrinsics .RS 4 توابع ذاتی را برای توابع درهم‌سازی رمزنگاری SHA\-384 و SHA\-512 فعال می‌کند\&. .RE .PP \-XX:+UseSuperWord .RS 4 تبدیل عملیات اسکالر (scalar) به عملیات ابرکلمه (superword) را فعال می‌کند\&. این گزینه به طور پیش‌فرض فعال است\&. برای غیرفعال کردن تبدیل عملیات اسکالر به ابرکلمه، گزینه \fB\-XX:\-UseSuperWord\fR را مشخص نمایید\&. تنها Java HotSpot Server VM از این گزینه پشتیبانی می‌کند\&. .RE .SS "گزینه‌های پیشرفته سرویس‌پذیری و عیب‌یابی (Advanced Serviceability Options)" .PP این گزینه‌ها امکان جمع‌آوری اطلاعات سیستم و انجام اشکال‌زدایی گسترده را فراهم می‌کنند\&. .PP \-XX:+ExtendedDTraceProbes .RS 4 پروب‌های اضافی ابزار \fBdtrace\fR را که بر کارایی تأثیر می‌گذارند، فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و \fBdtrace\fR تنها پروب‌های استاندارد را انجام می‌دهد\&. .RE .PP \-XX:+HeapDumpOnOutOfMemory .RS 4 هنگام پرتاب استثنای \fBjava\&.lang\&.OutOfMemoryError\fR، دامپ کردن هیپ جاوا (Java heap) در فایلی در دایرکتوری جاری با استفاده از پروفایلر هیپ (HPROF) را فعال می‌کند\&. می‌توانید مسیر و نام فایل دامپ هیپ را صراحتاً با استفاده از گزینه \fB\-XX:HeapDumpPath\fR تنظیم کنید\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و هنگام پرتاب استثنای \fBOutOfMemoryError\fR هیپ دامپ نمی‌شود\&. .RE .PP \-XX:HeapDumpPath=\fIpath\fR .RS 4 مسیر و نام فایل را برای نوشتن دامپ هیپ ارائه‌شده توسط پروفایلر هیپ (HPROF) هنگامی که گزینه \fB\-XX:+HeapDumpOnOutOfMemoryError\fR تنظیم شده باشد، مشخص می‌کند\&. به‌طور پیش‌فرض، فایل در دایرکتوری کاری جاری ایجاد می‌شود و به صورت \fBjava_pid\fR\fIpid\fR\fB\&.hprof\fR نام‌گذاری می‌شود که در آن \fIpid\fR شناسه فرآیندی است که موجب بروز خطا شده است\&. مثال زیر نحوه تنظیم صریح فایل پیش‌فرض را نشان می‌دهد (\fB%p\fR نشان‌دهنده شناسه فرآیند جاری است): .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:HeapDumpPath=\&./java_pid%p\&.hprof\fR .fi .if n \{\ .RE .\} مثال زیر نحوه تنظیم فایل دامپ هیپ به \fB/var/log/java/java_heapdump\&.hprof\fR را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:HeapDumpPath=/var/log/java/java_heapdump\&.hprof\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:LogFile=\fIpath\fR .RS 4 مسیر و نام فایلی که داده‌های لاگ در آن نوشته می‌شوند را تعیین می‌کند\&. به‌طور پیش‌فرض، فایل در دایرکتوری کاری جاری ایجاد می‌شود و نام آن \fBhotspot\&.log\fR است\&. .sp مثال زیر نحوه تنظیم فایل لاگ به \fB/var/log/java/hotspot\&.log\fR را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:LogFile=/var/log/java/hotspot\&.log\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+PrintClassHistogram .RS 4 چاپ هیستوگرام نمونه‌های کلاس پس از رویداد \fBControl+C\fR (\fBSIGTERM\fR) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .sp تنظیم این گزینه معادل اجرای دستور \fBjmap \-histo\fR یا دستور \fBjcmd \fR\fIpid\fR\fB GC\&.class_histogram\fR است که در آن \fIpid\fR شناسه فرآیند جاری جاوا است\&. .RE .PP \-XX:+PrintConcurrentLocks .RS 4 چاپ قفل‌ها را پس از یک رویداد فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .sp چاپ قفل‌های \fBjava\&.util\&.concurrent\fR را پس از یک رویداد \fBControl+C\fR (\fBSIGTERM\fR) فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .sp تنظیم این گزینه معادل اجرای دستور \fBjstack \-l\fR یا دستور \fBjcmd \fR\fIpid\fR\fB Thread\&.print \-l\fR است، که در آن \fIpid\fR شناسه فرآیند جاری جاوا است\&. .RE .PP \-XX:+UnlockDiagnosticVMOptions .RS 4 گزینه‌های مربوط به عیب‌یابی و تشخیص JVM را بازگشایی می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و گزینه‌های عیب‌یابی در دسترس نیستند\&. .RE .SS "گزینه‌های پیشرفته جمع‌آوری زباله (Advanced Garbage Collection Options)" .PP این گزینه‌ها نحوه انجام جمع‌آوری زباله (GC) توسط ماشین مجازی Java HotSpot را کنترل می‌کنند\&. .PP \-XX:+AggressiveHeap .RS 4 بهینه‌سازی هیپ جاوا را فعال می‌کند\&. این گزینه پارامترهای مختلفی را بر اساس پیکربندی رایانه (رم و پردازنده) به‌گونه‌ای تنظیم می‌کند که برای کارهای طولانی‌مدت با تخصیص شدید حافظه بهینه باشند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و هیپ بهینه‌سازی نمی‌شود\&. .RE .PP \-XX:+AlwaysPreTouch .RS 4 دست‌رسی و لمس (touching) تک‌تک صفحات در هیپ جاوا را هنگام مقداردهی اولیه JVM فعال می‌کند\&. این کار تمام صفحات را پیش از ورود به متد \fBmain()\fR وارد حافظه می‌کند\&. این گزینه می‌تواند در آزمایش‌ها برای شبیه‌سازی یک سیستم طولانی‌مدت با نگاشت تمام حافظه مجازی به حافظه فیزیکی استفاده شود\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و تمامی صفحات به موازات پر شدن فضای هیپ JVM تخصیص داده (commit) می‌شوند\&. .RE .PP \-XX:+CMSClassUnloadingEnabled .RS 4 تخلیه کلاس‌ها (class unloading) را هنگام استفاده از جمع‌آورنده زباله علامت‌گذاری و جاروب همزمان (CMS) فعال می‌کند\&. این گزینه به‌طور پیش‌فرض فعال است\&. برای غیرفعال کردن تخلیه کلاس برای جمع‌آورنده زباله CMS، گزینه \fB\-XX:\-CMSClassUnloadingEnabled\fR را مشخص کنید\&. .RE .PP \-XX:CMSExpAvgFactor=\fIpercent\fR .RS 4 درصد زمان (۰ تا ۱۰۰) را تعیین می‌کند که برای وزن‌دهی به نمونه فعلی هنگام محاسبه میانگین‌های نمایی برای آمارهای جمع‌آوری همزمان استفاده می‌شود\&. به‌طور پیش‌فرض، ضریب میانگین‌های نمایی روی ۲۵٪ تنظیم شده است\&. مثال زیر نحوه تنظیم این ضریب روی ۱۵٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CMSExpAvgFactor=15\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:CMSInitiatingOccupancyFraction=\fIpercent\fR .RS 4 درصد اشغال نسل قدیمی (old generation) را بین ۰ تا ۱۰۰ تعیین می‌کند که چرخه جمع‌آوری CMS در آن مقدار آغاز می‌شود\&. مقدار پیش‌فرض روی \-1 تنظیم شده است\&. هر مقدار منفی (از جمله مقدار پیش‌فرض) نشان می‌دهد که از \fB\-XX:CMSTriggerRatio\fR برای تعیین مقدار کسر اشغال آغازین استفاده می‌شود\&. .sp مثال زیر نحوه تنظیم کسر اشغال را به ۲۰٪ نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CMSInitiatingOccupancyFraction=20\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+CMSScavengeBeforeRemark .RS 4 تلاش برای روبش (scavenging) را قبل از مرحله علامت‌گذاری مجدد (remark) در CMS فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:CMSTriggerRatio=\fIpercent\fR .RS 4 درصدی (۰ تا ۱۰۰) از مقدار مشخص‌شده توسط \fB\-XX:MinHeapFreeRatio\fR را تعیین می‌کند که پیش از آغاز چرخه جمع‌آوری CMS تخصیص می‌یابد\&. مقدار پیش‌فرض روی ۸۰٪ تنظیم شده است\&. .sp مثال زیر نحوه تنظیم کسر اشغال به ۷۵٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:CMSTriggerRatio=75\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:ConcGCThreads=\fIthreads\fR .RS 4 تعداد نخ‌های مورد استفاده برای GC همزمان را تعیین می‌کند\&. مقدار پیش‌فرض به تعداد پردازنده‌های در دسترس JVM بستگی دارد\&. .sp برای مثال، برای تنظیم تعداد نخ‌های GC همزمان روی ۲، گزینه زیر را مشخص کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:ConcGCThreads=2\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+DisableExplicitGC .RS 4 گزینه‌ای را فعال می‌کند که پردازش فراخوانی‌های \fBSystem\&.gc()\fR را غیرفعال می‌سازد\&. این گزینه به‌طور پیش‌فرض غیرفعال است، به این معنی که فراخوانی‌های \fBSystem\&.gc()\fR پردازش می‌شوند\&. اگر پردازش فراخوانی‌های \fBSystem\&.gc()\fR غیرفعال شود، JVM همچنان در صورت لزوم عملیات GC را انجام می‌دهد\&. .RE .PP \-XX:+ExplicitGCInvokesConcurrent .RS 4 فراخوانی GC همزمان را با استفاده از درخواست \fBSystem\&.gc()\fR فعال می‌کند\&. این گزینه به‌طور پیش‌فرض غیرفعال است و تنها می‌تواند همراه با گزینه \fB\-XX:+UseConcMarkSweepGC\fR فعال شود\&. .RE .PP \-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses .RS 4 فراخوانی GC همزمان با استفاده از درخواست \fBSystem\&.gc()\fR و تخلیه کلاس‌ها در طول چرخه GC همزمان را فعال می‌کند\&. این گزینه به‌طور پیش‌فرض غیرفعال است و تنها می‌تواند همراه با گزینه \fB\-XX:+UseConcMarkSweepGC\fR فعال شود\&. .RE .PP \-XX:G1HeapRegionSize=\fIsize\fR .RS 4 اندازه ناحیه‌هایی را که هیپ جاوا هنگام استفاده از جمع‌آورنده اولویت-زباله (G1) به آن‌ها تقسیم می‌شود، تعیین می‌کند\&. این مقدار می‌تواند بین ۱ مگابایت تا ۳۲ مگابایت باشد\&. اندازه پیش‌فرض ناحیه به‌صورت ارگونومیک و بر اساس اندازه هیپ تعیین می‌شود\&. .sp مثال زیر نحوه تنظیم اندازه بخش‌ها روی ۱۶ مگابایت را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:G1HeapRegionSize=16m\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+G1PrintHeapRegions .RS 4 چاپ اطلاعات مربوط به اینکه کدام ناحیه‌ها توسط جمع‌آورنده G1 تخصیص داده شده و کدام ناحیه‌ها بازپس‌گرفته شده‌اند را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:G1ReservePercent=\fIpercent\fR .RS 4 درصدی از هیپ (۰ تا ۵۰) را تعیین می‌کند که به‌عنوان یک سقف کاذب برای کاهش احتمال شکست ارتقا (promotion failure) در جمع‌آورنده G1 رزرو می‌شود\&. به‌طور پیش‌فرض، این گزینه روی ۱۰٪ تنظیم شده است\&. .sp مثال زیر نحوه تنظیم هیپ رزروشده روی ۲۰٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:G1ReservePercent=20\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:InitialHeapSize=\fIsize\fR .RS 4 اندازه اولیه (به بایت) استخر تخصیص حافظه را تعیین می‌کند\&. این مقدار باید ۰ یا مضربی از ۱۰۲۴ و بزرگ‌تر از ۱ مگابایت باشد\&. برای مشخص کردن کیلوبایت حرف \fBk\fR یا \fBK\fR، برای مگابایت حرف \fBm\fR یا \fBM\fR، و برای گیگابایت حرف \fBg\fR یا \fBG\fR را الحاق کنید\&. مقدار پیش‌فرض در زمان اجرا بر اساس پیکربندی سیستم انتخاب می‌شود\&. بخش «Ergonomics» را در \fIJava SE HotSpot Virtual Machine Garbage Collection Tuning Guide\fR در نشانی http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gctuning/index\&.html ببینید\&. .sp مثال‌های زیر نحوه تنظیم اندازه حافظه تخصیص‌یافته به ۶ مگابایت را با استفاده از واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:InitialHeapSize=6291456\fR \fB\-XX:InitialHeapSize=6144k\fR \fB\-XX:InitialHeapSize=6m\fR .fi .if n \{\ .RE .\} اگر این گزینه را روی ۰ تنظیم کنید، اندازه اولیه برابر با مجموع اندازه‌های تخصیص‌یافته برای نسل قدیم و نسل جوان تنظیم خواهد شد\&. اندازه هیپ برای نسل جوان را می‌توان با استفاده از گزینه \fB\-XX:NewSize\fR تنظیم کرد\&. .RE .PP \-XX:InitialSurvivorRatio=\fIratio\fR .RS 4 نسبت اولیه فضای بازماندگان (survivor space) مورد استفاده توسط جمع‌آورنده زباله با کارایی بالا (که با گزینه‌های \fB\-XX:+UseParallelGC\fR یا \-\fBXX:+UseParallelOldGC\fR فعال می‌شود) را تعیین می‌کند\&. تغییر اندازه تطبیقی (adaptive sizing) به‌طور پیش‌فرض در جمع‌آورنده زباله با کارایی بالا با استفاده از گزینه‌های \fB\-XX:+UseParallelGC\fR و \fB\-XX:+UseParallelOldGC\fR فعال است، و فضای بازماندگان بر اساس رفتار برنامه، با شروع از مقدار اولیه، تغییر اندازه می‌دهد\&. اگر اندازه‌گیری تطبیقی غیرفعال باشد (با استفاده از گزینه \fB\-XX:\-UseAdaptiveSizePolicy\fR)، آنگاه باید از گزینه \fB\-XX:SurvivorRatio\fR برای تنظیم اندازه فضای بازماندگان در کل طول اجرای برنامه استفاده شود\&. .sp فرمول زیر می‌تواند برای محاسبه اندازه اولیه فضای بازماندگان (S) بر اساس اندازه نسل جوان (Y) و نسبت اولیه فضای بازماندگان (R) استفاده شود: .sp .if n \{\ .RS 4 .\} .nf \fBS=Y/(R+2)\fR .fi .if n \{\ .RE .\} عدد ۲ در معادله نشان‌دهنده دو فضای بازماندگان است\&. هرچه مقدار مشخص‌شده برای نسبت اولیه فضای بازماندگان بزرگ‌تر باشد، اندازه اولیه فضای بازماندگان کوچک‌تر خواهد بود\&. .sp به‌طور پیش‌فرض، نسبت اولیه فضای بازماندگان روی ۸ تنظیم شده است\&. اگر از مقدار پیش‌فرض برای اندازه فضای نسل جوان (۲ مگابایت) استفاده شود، اندازه اولیه فضای بازماندگان ۰\&.۲ مگابایت خواهد بود\&. .sp مثال زیر نحوه تنظیم نسبت اولیه فضای بازماندگان به ۴ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:InitialSurvivorRatio=4\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:InitiatingHeapOccupancyPercent=\fIpercent\fR .RS 4 درصد اشغال هیپ (۰ تا ۱۰۰) را تعیین می‌کند که در آن چرخه GC همزمان آغاز می‌شود\&. این گزینه توسط جمع‌آورنده‌های زباله‌ای استفاده می‌شود که چرخه GC همزمان را بر اساس اشغال کل هیپ، و نه فقط یکی از نسل‌ها، آغاز می‌کنند (برای مثال، جمع‌آورنده زباله G1)\&. .sp به‌طور پیش‌فرض، مقدار آغازین روی ۴۵٪ تنظیم شده است\&. مقدار ۰ به معنای چرخه‌های GC مداوم و بدون توقف است\&. مثال زیر نحوه تنظیم اشغال آغازین هیپ روی ۷۵٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:InitiatingHeapOccupancyPercent=75\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxGCPauseMillis=\fItime\fR .RS 4 هدفی را برای حداکثر زمان توقف GC (به میلی‌ثانیه) تعیین می‌کند\&. این یک هدف انعطاف‌پذیر (soft goal) است و JVM تمام تلاش خود را برای رسیدن به آن انجام خواهد داد\&. به‌طور پیش‌فرض، هیچ مقداری برای حداکثر زمان توقف وجود ندارد\&. .sp مثال زیر نحوه تنظیم حداکثر زمان توقف هدف به ۵۰۰ میلی‌ثانیه را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxGCPauseMillis=500\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxHeapSize=\fIsize\fR .RS 4 حداکثر اندازه (به بایت) استخر تخصیص حافظه را تعیین می‌کند\&. این مقدار باید مضربی از ۱۰۲۴ و بزرگ‌تر از ۲ مگابایت باشد\&. برای مشخص کردن کیلوبایت حرف \fBk\fR یا \fBK\fR، برای مگابایت حرف \fBm\fR یا \fBM\fR، و برای گیگابایت حرف \fBg\fR یا \fBG\fR را الحاق کنید\&. مقدار پیش‌فرض در زمان اجرا بر اساس پیکربندی سیستم انتخاب می‌شود\&. در استقرارهای سرور، معمولاً \fB\-XX:InitialHeapSize\fR و \fB\-XX:MaxHeapSize\fR روی یک مقدار تنظیم می‌شوند\&. بخش «Ergonomics» را در \fIJava SE HotSpot Virtual Machine Garbage Collection Tuning Guide\fR در نشانی http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/vm/gctuning/index\&.html ببینید\&. .sp مثال‌های زیر نحوه تعیین حداکثر اندازه مجاز حافظه تخصیص‌یافته به ۸۰ مگابایت را با استفاده از واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxHeapSize=83886080\fR \fB\-XX:MaxHeapSize=81920k\fR \fB\-XX:MaxHeapSize=80m\fR .fi .if n \{\ .RE .\} در پلتفرم‌های Oracle Solaris 7 و Oracle Solaris 8 SPARC، حد بالای این مقدار تقریباً ۴٬۰۰۰ مگابایت منهای مقادیر سربار است\&. در پلتفرم‌های Oracle Solaris 2\&.6 و x86، حد بالا تقریباً ۲٬۰۰۰ مگابایت منهای مقادیر سربار است\&. در پلتفرم‌های لینوکس، حد بالا تقریباً ۲٬۰۰۰ مگابایت منهای مقادیر سربار است\&. .sp گزینه \fB\-XX:MaxHeapSize\fR معادل \fB\-Xmx\fR است\&. .RE .PP \-XX:MaxHeapFreeRatio=\fIpercent\fR .RS 4 حداکثر درصد مجاز فضای خالی هیپ (۰ تا ۱۰۰) را پس از یک رویداد GC تعیین می‌کند\&. اگر فضای خالی هیپ فراتر از این مقدار گسترش یابد، هیپ کوچک خواهد شد\&. به‌طور پیش‌فرض، این مقدار روی ۷۰٪ تنظیم شده است\&. .sp مثال زیر نحوه تنظیم حداکثر نسبت هیپ خالی به ۷۵٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxHeapFreeRatio=75\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxMetaspaceSize=\fIsize\fR .RS 4 حداکثر مقدار حافظه نیتیو (native memory) را که می‌تواند برای فراداده‌های کلاس (class metadata) تخصیص داده شود تعیین می‌کند\&. به‌طور پیش‌فرض، این اندازه محدود نیست\&. مقدار فراداده برای یک برنامه به خود برنامه، سایر برنامه‌های در حال اجرا و مقدار حافظه در دسترس سیستم بستگی دارد\&. .sp مثال زیر نحوه تعیین حداکثر اندازه فراداده‌های کلاس به ۲۵۶ مگابایت را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxMetaspaceSize=256m\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MaxNewSize=\fIsize\fR .RS 4 حداکثر اندازه (به بایت) هیپ را برای نسل جوان (nursery) تعیین می‌کند\&. مقدار پیش‌فرض به‌صورت ارگونومیک تعیین می‌شود\&. .RE .PP \-XX:MaxTenuringThreshold=\fIthreshold\fR .RS 4 حداکثر آستانه تصدی/ماندگاری (tenuring threshold) را برای استفاده در تغییر اندازه تطبیقی GC تعیین می‌کند\&. بزرگ‌ترین مقدار ۱۵ است\&. مقدار پیش‌فرض برای جمع‌آورنده موازی (throughput) برابر ۱۵ و برای جمع‌آورنده CMS برابر ۶ است\&. .sp مثال زیر نحوه تنظیم حداکثر آستانه تصدی به ۱۰ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MaxTenuringThreshold=10\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:MetaspaceSize=\fIsize\fR .RS 4 اندازه فضای تخصیص‌یافته فراداده‌های کلاس را تعیین می‌کند که اولین بار پس از فراتر رفتن از آن، جمع‌آوری زباله آغاز می‌شود\&. این آستانه برای جمع‌آوری زباله بسته به مقدار فراداده استفاده‌شده کاهش یا افزایش می‌یابد\&. اندازه پیش‌فرض به پلتفرم بستگی دارد\&. .RE .PP \-XX:MinHeapFreeRatio=\fIpercent\fR .RS 4 حداقل درصد مجاز فضای خالی هیپ (۰ تا ۱۰۰) را پس از یک رویداد GC تعیین می‌کند\&. اگر فضای خالی هیپ به کمتر از این مقدار برسد، هیپ گسترش خواهد یافت\&. به‌طور پیش‌فرض، این مقدار روی ۴۰٪ تنظیم شده است\&. .sp مثال زیر نحوه تنظیم حداقل نسبت هیپ خالی به ۲۵٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:MinHeapFreeRatio=25\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:NewRatio=\fIratio\fR .RS 4 نسبت بین اندازه نسل جوان و نسل قدیم را تعیین می‌کند\&. به‌طور پیش‌فرض، این گزینه روی ۲ تنظیم شده است\&. مثال زیر نحوه تنظیم نسبت جوان به قدیم را روی ۱ نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:NewRatio=1\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:NewSize=\fIsize\fR .RS 4 اندازه اولیه (به بایت) هیپ را برای نسل جوان (nursery) تعیین می‌کند\&. برای مشخص کردن کیلوبایت حرف \fBk\fR یا \fBK\fR، برای مگابایت حرف \fBm\fR یا \fBM\fR، و برای گیگابایت حرف \fBg\fR یا \fBG\fR را الحاق کنید\&. .sp ناحیه نسل جوان در هیپ برای اشیاء جدید استفاده می‌شود\&. عملیات GC در این ناحیه بیش از سایر نواحی انجام می‌شود\&. اگر اندازه نسل جوان بیش از حد کم باشد، تعداد زیادی GC جزئی (minor GC) انجام خواهد شد\&. اگر اندازه بیش از حد زیاد باشد، فقط GC کامل (full GC) اجرا خواهد شد که تکمیل آن ممکن است زمان زیادی ببرد\&. اوراکل توصیه می‌کند اندازه نسل جوان را بین یک‌دوم تا یک‌چهارم کل اندازه هیپ نگه دارید\&. .sp مثال‌های زیر نحوه تعیین اندازه اولیه نسل جوان به ۲۵۶ مگابایت را با استفاده از واحدهای مختلف نشان می‌دهند: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:NewSize=256m\fR \fB\-XX:NewSize=262144k\fR \fB\-XX:NewSize=268435456\fR .fi .if n \{\ .RE .\} گزینه \fB\-XX:NewSize\fR معادل \fB\-Xmn\fR است\&. .RE .PP \-XX:ParallelGCThreads=\fIthreads\fR .RS 4 تعداد نخ‌های مورد استفاده برای جمع‌آوری موازی زباله در نسل‌های جوان و قدیم را تعیین می‌کند\&. مقدار پیش‌فرض به تعداد پردازنده‌های در دسترس JVM بستگی دارد\&. .sp برای مثال، برای تنظیم تعداد نخ‌های GC موازی به ۲، گزینه زیر را مشخص کنید: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:ParallelGCThreads=2\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+ParallelRefProcEnabled .RS 4 پردازش موازی ارجاعات (reference processing) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintAdaptiveSizePolicy .RS 4 چاپ اطلاعات مربوط به تغییر اندازه تطبیقی نسل‌ها را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGC .RS 4 چاپ پیام‌ها در هر بار اجرای GC را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGCApplicationConcurrentTime .RS 4 چاپ مقدار زمان سپری‌شده از آخرین توقف (برای مثال، توقف GC) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGCApplicationStoppedTime .RS 4 چاپ مدت‌زمان طول کشیدن توقف (برای مثال، توقف GC) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGCDateStamps .RS 4 چاپ برچسب تاریخ (date stamp) را در هر بار اجرای GC فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGCDetails .RS 4 چاپ پیام‌های تفصیلی را در هر بار اجرای GC فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGCTaskTimeStamps .RS 4 چاپ برچسب‌های زمانی را برای هر تسک جداگانه نخ‌های کارگر GC فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintGCTimeStamps .RS 4 چاپ برچسب‌های زمانی را در هر بار اجرای GC فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+PrintStringDeduplicationStatistics .RS 4 آمارهای تفصیلی حذف داده‌های تکراری رشته‌ها (deduplication) را چاپ می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. گزینه \fB\-XX:+UseStringDeduplication\fR را ببینید\&. .RE .PP \-XX:+PrintTenuringDistribution .RS 4 چاپ اطلاعات سن تصدی (tenuring age) را فعال می‌کند\&. مثال زیر نمونه‌ای از این خروجی است: .sp .if n \{\ .RS 4 .\} .nf \fBDesired survivor size 48286924 bytes, new threshold 10 (max 10)\fR \fB\- age 1: 28992024 bytes, 28992024 total\fR \fB\- age 2: 1366864 bytes, 30358888 total\fR \fB\- age 3: 1425912 bytes, 31784800 total\fR \fB\&.\&.\&.\fR .fi .if n \{\ .RE .\} اشیاء با سن ۱ جوان‌ترین بازماندگان هستند (آن‌ها پس از روبش قبلی ایجاد شدند، از آخرین روبش جان سالم به در بردند و از فضای eden به فضای بازماندگان منتقل شدند)\&. اشیاء با سن ۲ از دو روبش جان سالم به در برده‌اند (در طول روبش دوم از یک فضای بازماندگان به فضای بعدی کپی شده‌اند)\&. و به همین ترتیب\&. .sp در مثال بالا، ۲۸٬۹۹۲٬۰۲۴ بایت از یک روبش باقی مانده و از eden به فضای بازماندگان کپی شده‌اند، ۱٬۳۶۶٬۸۶۴ بایت توسط اشیاء با سن ۲ اشغال شده است، و غیره\&. مقدار سوم در هر ردیف، اندازه تجمعی اشیاء با سن n یا کمتر است\&. .sp به‌طور پیش‌فرض، این گزینه غیرفعال است\&. .RE .PP \-XX:+ScavengeBeforeFullGC .RS 4 عملیات GC نسل جوان را قبل از هر GC کامل (full GC) فعال می‌کند\&. این گزینه به‌طور پیش‌فرض فعال است\&. اوراکل توصیه می‌کند که آن را \fIغیرفعال نکنید\fR، زیرا روبش نسل جوان قبل از یک GC کامل می‌تواند تعداد اشیاء قابل دسترسی از فضای نسل قدیم به فضای نسل جوان را کاهش دهد\&. برای غیرفعال کردن GC نسل جوان قبل از هر GC کامل، گزینه \fB\-XX:\-ScavengeBeforeFullGC\fR را مشخص کنید\&. .RE .PP \-XX:SoftRefLRUPolicyMSPerMB=\fItime\fR .RS 4 مدت زمانی (به میلی‌ثانیه) را که یک شیء با ارجاع ضعیف (softly reachable) پس از آخرین باری که به آن ارجاع داده شده است روی هیپ فعال نگه داشته می‌شود، تعیین می‌کند\&. مقدار پیش‌فرض، یک ثانیه طول عمر به ازای هر مگابایت فضای خالی در هیپ است\&. گزینه \fB\-XX:SoftRefLRUPolicyMSPerMB\fR مقادیر صحیحی را می‌پذیرد که نشان‌دهنده میلی‌ثانیه به ازای هر مگابایت از اندازه فعلی هیپ (برای ماشین مجازی Java HotSpot Client) یا حداکثر اندازه ممکن هیپ (برای ماشین مجازی Java HotSpot Server) هستند\&. این تفاوت به این معنی است که Client VM تمایل دارد به جای بزرگ کردن هیپ، ارجاعات نرم (soft references) را پاکسازی کند، در حالی که Server VM تمایل دارد به جای پاکسازی ارجاعات نرم، هیپ را رشد دهد\&. در مورد اخیر، مقدار گزینه \fB\-Xmx\fR تأثیر قابل‌توجهی بر سرعت جمع‌آوری زباله ارجاعات نرم دارد\&. .sp مثال زیر نحوه تنظیم مقدار را روی ۲\&.۵ ثانیه نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:SoftRefLRUPolicyMSPerMB=2500\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:StringDeduplicationAgeThreshold=\fIthreshold\fR .RS 4 اشیاء \fBString\fR که به سن مشخص‌شده می‌رسند، کاندیدای حذف تکرار (deduplication) در نظر گرفته می‌شوند\&. سن یک شیء معیاری از تعداد دفعاتی است که از جمع‌آوری زباله جان سالم به در برده است\&. این مورد گاهی اوقات تصدی (tenuring) نامیده می‌شود؛ گزینه \fB\-XX:+PrintTenuringDistribution\fR را ببینید\&. توجه داشته باشید اشیاء \fBString\fR که پیش از رسیدن به این سن به ناحیه قدیمی هیپ ارتقا می‌یابند، همیشه کاندیدای حذف تکرار در نظر گرفته می‌شوند\&. مقدار پیش‌فرض این گزینه \fB3\fR است\&. گزینه \fB\-XX:+UseStringDeduplication\fR را ببینید\&. .RE .PP \-XX:SurvivorRatio=\fIratio\fR .RS 4 نسبت بین اندازه فضای eden و اندازه فضای بازماندگان (survivor) را تعیین می‌کند\&. به‌طور پیش‌فرض، این گزینه روی ۸ تنظیم شده است\&. مثال زیر نحوه تنظیم نسبت فضای eden به فضای بازماندگان را به ۴ نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:SurvivorRatio=4\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:TargetSurvivorRatio=\fIpercent\fR .RS 4 درصد مورد نظر فضای بازماندگان (۰ تا ۱۰۰) مورد استفاده پس از GC نسل جوان را تعیین می‌کند\&. به‌طور پیش‌فرض، این گزینه روی ۵۰٪ تنظیم شده است\&. .sp مثال زیر نحوه تنظیم نسبت هدف فضای بازماندگان به ۳۰٪ را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:TargetSurvivorRatio=30\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:TLABSize=\fIsize\fR .RS 4 اندازه اولیه (به بایت) یک بافر تخصیص محلی نخ (TLAB) را تعیین می‌کند\&. برای مشخص کردن کیلوبایت حرف \fBk\fR یا \fBK\fR، برای مگابایت حرف \fBm\fR یا \fBM\fR، و برای گیگابایت حرف \fBg\fR یا \fBG\fR را الحاق کنید\&. اگر این گزینه روی ۰ تنظیم شود، JVM اندازه اولیه را به‌طور خودکار انتخاب می‌کند\&. .sp مثال زیر نحوه تعیین اندازه اولیه TLAB به ۵۱۲ کیلوبایت را نشان می‌دهد: .sp .if n \{\ .RS 4 .\} .nf \fB\-XX:TLABSize=512k\fR .fi .if n \{\ .RE .\} .RE .PP \-XX:+UseAdaptiveSizePolicy .RS 4 استفاده از تغییر اندازه تطبیقی نسل‌ها را فعال می‌کند\&. این گزینه به‌طور پیش‌فرض فعال است\&. برای غیرفعال کردن تغییر اندازه تطبیقی نسل‌ها، گزینه \fB\-XX:\-UseAdaptiveSizePolicy\fR را مشخص کرده و اندازه استخر تخصیص حافظه را صراحتاً تنظیم کنید (گزینه \fB\-XX:SurvivorRatio\fR را ببینید)\&. .RE .PP \-XX:+UseCMSInitiatingOccupancyOnly .RS 4 استفاده از مقدار اشغال را به‌عنوان تنها معیار برای آغاز به کار جمع‌آورنده CMS فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و ممکن است از معیارهای دیگر استفاده شود\&. .RE .PP \-XX:+UseConcMarkSweepGC .RS 4 استفاده از جمع‌آورنده زباله CMS را برای نسل قدیم فعال می‌کند\&. اوراکل توصیه می‌کند در صورتی که الزامات تاخیر برنامه توسط جمع‌آورنده زباله موازی (\fB\-XX:+UseParallelGC\fR) برآورده نمی‌شود، از جمع‌آورنده زباله CMS استفاده کنید\&. جمع‌آورنده زباله G1 (\fB\-XX:+UseG1GC\fR) گزینه جایگزین دیگری است\&. .sp به‌طور پیش‌فرض، این گزینه غیرفعال است و جمع‌آورنده به‌طور خودکار بر اساس پیکربندی دستگاه و نوع JVM انتخاب می‌شود\&. هنگامی که این گزینه فعال است، گزینه \fB\-XX:+UseParNewGC\fR به‌طور خودکار تنظیم می‌شود و نباید آن را غیرفعال کنید، زیرا ترکیب گزینه‌های زیر در JDK 8 منسوخ شده است: \fB\-XX:+UseConcMarkSweepGC \-XX:\-UseParNewGC\fR\&. .RE .PP \-XX:+UseG1GC .RS 4 استفاده از جمع‌آورنده زباله اولویت-زباله (G1) را فعال می‌کند\&. این یک جمع‌آورنده زباله سروری است که برای ماشین‌های چندپردازنده‌ای با مقدار زیادی رم طراحی شده است\&. این ابزار اهداف زمان توقف GC را با احتمال بالایی برآورده می‌کند و در عین حال توان کاری (throughput) بالایی را حفظ می‌نماید\&. جمع‌آورنده G1 برای برنامه‌هایی توصیه می‌شود که به هیپ‌های بزرگ (اندازه‌های حدود ۶ گیگابایت یا بزرگ‌تر) با الزامات تأخیر GC محدود (زمان توقف پایدار و قابل پیش‌بینی زیر ۰\&.۵ ثانیه) نیاز دارند\&. .sp به‌طور پیش‌فرض، این گزینه غیرفعال است و جمع‌آورنده به‌طور خودکار بر اساس پیکربندی دستگاه و نوع JVM انتخاب می‌شود\&. .RE .PP \-XX:+UseGCOverheadLimit .RS 4 استفاده از سیاستی را فعال می‌کند که نسبت زمان صرف‌شده توسط JVM برای GC را قبل از پرتاب استثنای \fBOutOfMemoryError\fR محدود می‌سازد\&. این گزینه به‌طور پیش‌فرض فعال است و GC موازی در صورتی که بیش از ۹۸٪ از کل زمان صرف جمع‌آوری زباله شود و کمتر از ۲٪ از هیپ بازیابی شود، یک استثنای \fBOutOfMemoryError\fR پرتاب خواهد کرد\&. هنگامی که هیپ کوچک است، این ویژگی می‌تواند برای جلوگیری از اجرای برنامه‌ها برای دوره‌های زمانی طولانی با پیشرفت کم یا بدون پیشرفت استفاده شود\&. برای غیرفعال کردن این گزینه، \fB\-XX:\-UseGCOverheadLimit\fR را مشخص کنید\&. .RE .PP \-XX:+UseNUMA .RS 4 بهینه‌سازی عملکرد یک برنامه را در سیستمی با معماری حافظه غیریکنواخت (NUMA) با افزایش استفاده برنامه از حافظه با تاخیر کمتر فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و هیچ بهینه‌سازی برای NUMA انجام نمی‌شود\&. این گزینه تنها زمانی در دسترس است که از جمع‌آورنده زباله موازی (\fB\-XX:+UseParallelGC\fR) استفاده شود\&. .RE .PP \-XX:+UseParallelGC .RS 4 استفاده از جمع‌آورنده زباله روبش موازی (که به عنوان جمع‌آورنده throughput نیز شناخته می‌شود) را فعال می‌کند تا با بهره‌گیری از چندین پردازنده، عملکرد برنامه شما را بهبود بخشد\&. .sp به‌طور پیش‌فرض، این گزینه غیرفعال است و جمع‌آورنده به‌طور خودکار بر اساس پیکربندی سیستم و نوع JVM انتخاب می‌شود\&. در صورت فعال بودن، گزینه \fB\-XX:+UseParallelOldGC\fR نیز به‌طور خودکار فعال می‌شود، مگر اینکه صراحتاً آن را غیرفعال کنید\&. .RE .PP \-XX:+UseParallelOldGC .RS 4 استفاده از جمع‌آورنده زباله موازی را برای GCهای کامل (full GCs) فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. فعال کردن آن، گزینه \fB\-XX:+UseParallelGC\fR را نیز به‌طور خودکار فعال می‌سازد\&. .RE .PP \-XX:+UseParNewGC .RS 4 استفاده از نخ‌های موازی برای جمع‌آوری در نسل جوان را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. هنگامی که گزینه \fB\-XX:+UseConcMarkSweepGC\fR را تنظیم می‌کنید، به‌طور خودکار فعال می‌شود\&. استفاده از گزینه \fB\-XX:+UseParNewGC\fR بدون گزینه \fB\-XX:+UseConcMarkSweepGC\fR در JDK 8 منسوخ شده است\&. .RE .PP \-XX:+UseSerialGC .RS 4 استفاده از جمع‌آورنده زباله سریالی را فعال می‌کند\&. این گزینه عموماً بهترین انتخاب برای برنامه‌های کوچک و ساده‌ای است که به هیچ قابلیت خاصی از جمع‌آوری زباله نیاز ندارند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است و جمع‌آورنده به‌طور خودکار بر اساس پیکربندی سیستم و نوع JVM انتخاب می‌شود\&. .RE .PP \-XX:+UseSHM .RS 4 در لینوکس، JVM را قادر می‌سازد تا از حافظه اشتراکی برای راه‌اندازی صفحات بزرگ (large pages) استفاده کند\&. .sp برای اطلاعات بیشتر، بخش «صفحات بزرگ» (Large Pages) را ببینید\&. .RE .PP \-XX:+UseStringDeduplication .RS 4 حذف داده‌های تکراری رشته‌ها (string deduplication) را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه غیرفعال است\&. برای استفاده از این گزینه، باید جمع‌آورنده اولویت-زباله (G1) را فعال کنید\&. گزینه \fB\-XX:+UseG1GC\fR را ببینید\&. .sp \fIحذف داده‌های تکراری رشته‌ها\fR با بهره‌گیری از این واقعیت که بسیاری از اشیاء \fBString\fR یکسان هستند، ردپای حافظه اشیاء \fBString\fR را در هیپ جاوا کاهش می‌دهد\&. به جای اینکه هر شیء \fBString\fR به آرایه کاراکتری اختصاصی خود اشاره کند، اشیاء یکسان \fBString\fR می‌توانند به یک آرایه کاراکتری مشترک اشاره کرده و آن را به اشتراک بگذارند\&. .RE .PP \-XX:+UseTLAB .RS 4 استفاده از بلوک‌های تخصیص محلی نخ (TLAB) را در فضای نسل جوان فعال می‌کند\&. این گزینه به‌طور پیش‌فرض فعال است\&. برای غیرفعال کردن استفاده از TLABها، \fB\-XX:\-UseTLAB\fR را مشخص کنید\&. .RE .SS "گزینه‌های منسوخ و حذف‌شده (Deprecated and Removed Options)" .PP این گزینه‌ها در نسخه‌های پیشین گنجانده شده بودند، اما از آن زمان به بعد غیرضروری تشخیص داده شده‌اند\&. .PP \-Xincgc .RS 4 جمع‌آوری زباله افزایشی (incremental garbage collection) را فعال می‌کند\&. این گزینه در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-Xrun\fIlibname\fR .RS 4 کتابخانه اشکال‌زدایی/ارزیابی عملکرد (debugging/profiling) مشخص‌شده را بارگذاری می‌کند\&. گزینه \fB\-agentlib\fR جایگزین این گزینه شده است\&. .RE .PP \-XX:CMSIncrementalDutyCycle=\fIpercent\fR .RS 4 درصد زمانی (۰ تا ۱۰۰) میان جمع‌آوری‌های جزئی را تنظیم می‌کند که به جمع‌آورنده همگام اجازه اجرا داده می‌شود\&. این گزینه به دنبال منسوخ شدن گزینه \fB\-XX:+CMSIncrementalMode\fR در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:CMSIncrementalDutyCycleMin=\fIpercent\fR .RS 4 درصد زمانی (۰ تا ۱۰۰) میان جمع‌آوری‌های جزئی را تعیین می‌کند که حد پایین چرخه کاری در هنگام فعال بودن \fB\-XX:+CMSIncrementalPacing\fR محسوب می‌شود\&. این گزینه به دنبال منسوخ شدن گزینه \fB\-XX:+CMSIncrementalMode\fR در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:+CMSIncrementalMode .RS 4 حالت افزایشی را برای جمع‌آورنده CMS فعال می‌کند\&. این گزینه به همراه سایر گزینه‌هایی که با \fBCMSIncremental\fR آغاز می‌شوند، در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:CMSIncrementalOffset=\fIpercent\fR .RS 4 درصد زمانی (۰ تا ۱۰۰) را تعیین می‌کند که چرخه کاری حالت افزایشی در طول بازه زمانی میان جمع‌آوری‌های جزئی به سمت راست جابه‌جا (shift) می‌شود\&. این گزینه به دنبال منسوخ شدن گزینه \fB\-XX:+CMSIncrementalMode\fR در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:+CMSIncrementalPacing .RS 4 تنظیم خودکار چرخه کاری حالت افزایشی را بر اساس آمارهای جمع‌آوری‌شده در حین اجرای JVM فعال می‌کند\&. این گزینه به دنبال منسوخ شدن گزینه \fB\-XX:+CMSIncrementalMode\fR در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:CMSIncrementalSafetyFactor=\fIpercent\fR .RS 4 درصد زمانی (۰ تا ۱۰۰) مورد استفاده برای افزودن حاشیه اطمینان در هنگام محاسبه چرخه کاری را تنظیم می‌کند\&. این گزینه به دنبال منسوخ شدن گزینه \fB\-XX:+CMSIncrementalMode\fR در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:CMSInitiatingPermOccupancyFraction=\fIpercent\fR .RS 4 درصد اشغال فضای نسل دائمی (۰ تا ۱۰۰) را برای شروع فرآیند GC تنظیم می‌کند\&. این گزینه در JDK 8 بدون هیچ جایگزینی منسوخ شد\&. .RE .PP \-XX:MaxPermSize=\fIsize\fR .RS 4 حداکثر اندازه فضای نسل دائمی را (به بایت) تنظیم می‌کند\&. این گزینه در JDK 8 منسوخ شده و گزینه \fB\-XX:MaxMetaspaceSize\fR جایگزین آن گردید\&. .RE .PP \-XX:PermSize=\fIsize\fR .RS 4 فضای تخصیص‌یافته به نسل دائمی (به بایت) را تنظیم می‌کند که در صورت فراتر رفتن از آن، یک عملیات جمع‌آوری زباله آغاز می‌شود\&. این گزینه در JDK 8 منسوخ شده و گزینه \fB\-XX:MetaspaceSize\fR جایگزین آن گردید\&. .RE .PP \-XX:+UseSplitVerifier .RS 4 تقسیم فرآیند اعتبارسنجی را فعال می‌کند\&. به‌طور پیش‌فرض، این گزینه در نسخه‌های پیشین فعال بود و اعتبارسنجی به دو فاز تقسیم می‌شد: ارجاع نوع (انجام‌شده توسط کامپایلر) و بررسی نوع (انجام‌شده توسط زمان اجرای JVM)\&. این گزینه در JDK 8 منسوخ شده است و اکنون اعتبارسنجی به‌طور پیش‌فرض به دو فاز تقسیم می‌شود و راهی برای غیرفعال کردن آن وجود ندارد\&. .RE .PP \-XX:+UseStringCache .RS 4 حافظه پنهان رشته‌های متداول تخصیص‌یافته را فعال می‌کند\&. این گزینه در JDK 8 بدون هیچ جایگزینی حذف شد\&. .RE .SH "مثال‌های تنظیم عملکرد (PERFORMANCE TUNING EXAMPLES)" .PP مثال‌های زیر نحوه استفاده از گزینه‌های تجربی تنظیم عملکرد را برای بهینه‌سازی توان عملیاتی یا ارائه زمان پاسخ‌دهی کوتاه‌تر نشان می‌دهند\&. .PP \fBمثال ۱ \fRتنظیم برای توان عملیاتی بالاتر .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBjava \-d64 \-server \-XX:+AggressiveOpts \-XX:+UseLargePages \-Xmn10g \-Xms26g \-Xmx26g\fR .fi .if n \{\ .RE .\} .RE .PP \fBمثال ۲ \fRتنظیم برای زمان پاسخ‌دهی کوتاه‌تر .RS 4 .sp .if n \{\ .RS 4 .\} .nf \fBjava \-d64 \-XX:+UseG1GC \-Xms26g Xmx26g \-XX:MaxGCPauseMillis=500 \-XX:+PrintGCTimeStamp\fR .fi .if n \{\ .RE .\} .RE .SH "صفحات بزرگ (LARGE PAGES)" .PP صفحات بزرگ (Large pages) که به عنوان huge pages نیز شناخته می‌شوند، صفحات حافظه‌ای هستند که به‌طور چشمگیری از اندازه استاندارد صفحه حافظه (که بسته به پردازنده و سیستم‌عامل متفاوت است) بزرگ‌تر هستند\&. صفحات بزرگ، بافرهای ترجمه آدرس پردازنده (Translation\-Lookaside Buffers) را بهینه‌سازی می‌کنند\&. .PP یک بافر ترجمه آدرس (TLB یا Translation\-Lookaside Buffer) حافظه پنهانی برای ترجمه صفحه است که جدیدترین ترجمه‌های نشانی مجازی به فیزیکی را نگهداری می‌کند\&. TLB یک منبع سیستمی کمیاب و محدود است\&. عدم موفقیت در یافتن نشانی در TLB (اصطلاحاً TLB miss) می‌تواند پرهزینه باشد؛ زیرا پردازنده در این حالت باید از جدول سلسله‌مراتبی صفحات بخواند که ممکن است نیازمند دسترسی‌های متعددی به حافظه باشد\&. با استفاده از اندازه بزرگ‌تر برای صفحات حافظه، یک مدخل واحد در TLB می‌تواند محدوده بزرگ‌تری از حافظه را پوشش دهد\&. در نتیجه، فشار کمتری بر TLB وارد خواهد شد و برنامه‌های با مصرف فشرده حافظه ممکن است عملکرد بهتری داشته باشند\&. .PP با این حال، حافظه صفحات بزرگ می‌تواند اثر منفی نیز بر عملکرد سیستم بگذارد\&. به عنوان مثال، هنگامی که مقدار زیادی از حافظه توسط یک برنامه قفل (pin) می‌شود، ممکن است کمبود حافظه معمولی ایجاد شده و باعث صفحه‌بندی بیش از حد (paging) در سایر برنامه‌ها شده و کل سیستم را کند نماید\&. همچنین، سیستمی که برای مدتی طولانی فعال بوده است ممکن است دچار تکه‌تکه‌شدگی شدید حافظه شود که رزرو حافظه کافی برای صفحات بزرگ را غیرممکن می‌سازد\&. هنگامی که این اتفاق رخ می‌دهد، سیستم‌عامل یا JVM به استفاده از صفحات معمولی بازمی‌گردند\&. .SS "پشتیبانی از صفحات بزرگ (Large Pages Support)" .PP سولاریس و لینوکس از صفحات بزرگ پشتیبانی می‌کنند\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBSolaris\fR .RS 4 .PP سولاریس ۹ و نسخه‌های پس از آن شامل پشتیبانی از اندازه صفحات چندگانه (MPSS) هستند؛ هیچ پیکربندی اضافی لازم نیست\&. به پیوند http://www\&.oracle\&.com/technetwork/server\-storage/solaris10/overview/solaris9\-features\-scalability\-135663\&.html مراجعه کنید\&. .RE .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBLinux\fR .RS 4 .PP کرنل ۲\&.۶ از صفحات بزرگ پشتیبانی می‌کند\&. برخی از توزیع‌کنندگان این کد را به انتشار‌های مبتنی بر ۲\&.۴ خود نیز بک‌پورت کرده‌اند\&. برای بررسی اینکه آیا سیستم شما می‌تواند از حافظه صفحات بزرگ پشتیبانی کند یا خیر، دستور زیر را امتحان کنید: .sp .if n \{\ .RS 4 .\} .nf \fB# cat /proc/meminfo | grep Huge\fR \fBHugePages_Total: 0\fR \fBHugePages_Free: 0\fR \fBHugepagesize: 2048 kB\fR .fi .if n \{\ .RE .\} .PP اگر خروجی سه متغیر «Huge» را نشان دهد، سیستم شما می‌تواند از حافظه صفحات بزرگ پشتیبانی کند، اما نیاز به پیکربندی دارد\&. اگر این دستور چیزی چاپ نکرد، سیستم شما از صفحات بزرگ پشتیبانی نمی‌کند\&. برای پیکربندی سیستم جهت استفاده از حافظه صفحات بزرگ، به عنوان کاربر \fBroot\fR وارد شوید و سپس مراحل زیر را دنبال کنید: .sp .RS 4 .ie n \{\ \h'-04' 1.\h'+01'\c .\} .el \{\ .sp -1 .IP " 1." 4.2 .\} اگر از گزینه \fB\-XX:+UseSHM\fR (به جای \fB\-XX:+UseHugeTLBFS\fR) استفاده می‌کنید، مقدار \fBSHMMAX\fR را افزایش دهید\&. این مقدار باید از اندازه هیپ جاوا بزرگ‌تر باشد\&. روی سیستمی با ۴ گیگابایت رم فیزیکی (یا کمتر)، دستور زیر تمام حافظه را قابل اشتراک‌گذاری می‌کند: .sp .if n \{\ .RS 4 .\} .nf \fB# echo 4294967295 > /proc/sys/kernel/shmmax\fR .fi .if n \{\ .RE .\} .RE .sp .RS 4 .ie n \{\ \h'-04' 2.\h'+01'\c .\} .el \{\ .sp -1 .IP " 2." 4.2 .\} اگر از گزینه \fB\-XX:+UseSHM\fR یا \fB\-XX:+UseHugeTLBFS\fR استفاده می‌کنید، تعداد صفحات بزرگ را مشخص کنید\&. در مثال زیر، ۳ گیگابایت از یک سیستم ۴ گیگابایتی برای صفحات بزرگ رزرو شده است (با فرض اینکه اندازه یک صفحه بزرگ 2048kB باشد، در این صورت 3 GB = 3 * 1024 MB = 3072 MB = 3072 * 1024 kB = 3145728 kB و 3145728 kB / 2048 kB = 1536 خواهد بود): .sp .if n \{\ .RS 4 .\} .nf \fB# echo 1536 > /proc/sys/vm/nr_hugepages\fR .fi .if n \{\ .RE .\} .RE .if n \{\ .sp .\} .RS 4 .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .ps +1 \fBنکته\fR .ps -1 .br .TS allbox tab(:); l. T{ .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} توجه داشته باشید که مقادیر موجود در \fB/proc\fR پس از راه‌اندازی مجدد سیستم بازنشانی می‌شوند، بنابراین ممکن است بخواهید آن‌ها را در یک اسکریپت مقداردهی اولیه (برای مثال \fBrc\&.local\fR یا \fBsysctl\&.conf\fR) تنظیم کنید\&. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} اگر پارامترهای کرنل سیستم‌عامل \fB/proc/sys/kernel/shmmax\fR یا \fB/proc/sys/vm/nr_hugepages\fR را پیکربندی کنید (یا اندازه آن‌ها را تغییر دهید)، فرآیندهای جاوا ممکن است علاوه بر هیپ جاوا، صفحات بزرگ را به بخش‌های دیگر نیز اختصاص دهند\&. این مراحل می‌توانند صفحات بزرگ را به بخش‌های زیر اختصاص دهند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} هیپ جاوا (Java heap) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} حافظه پنهان کد (Code cache) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} ساختار داده نگاشت بیتی علامت‌گذاری (marking bitmap) برای GC موازی .RE .sp در نتیجه، اگر پارامتر \fBnr_hugepages\fR را برابر با اندازه هیپ جاوا تنظیم کنید، JVM ممکن است در تخصیص نواحی حافظه پنهان کد روی صفحات بزرگ با شکست مواجه شود، زیرا اندازه این نواحی بسیار بزرگ است\&. .RE T} .TE .sp 1 .sp .5v .RE .RE .SH "وضعیت خروج (EXIT STATUS)" .PP مقادیر خروج زیر معمولاً هنگامی توسط راه‌انداز (launcher) بازگردانده می‌شوند که با آرگومان‌های نادرست فراخوانی شود، خطاهای جدی رخ دهند یا استثناهایی توسط JVM ایجاد شوند\&. با این حال، یک برنامه جاوا ممکن است با استفاده از فراخوانی API \fBSystem\&.exit(exitValue)\fR هر مقداری را بازگرداند\&. این مقادیر عبارتند از: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB0\fR: اتمام موفقیت‌آمیز .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} \fB>0\fR: یک خطا رخ داده است .RE .SH "همچنین ببینید (SEE ALSO)" .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} javac(1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} jdb(1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} javah(1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} jar(1) .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} jstat(1) .RE .br 'pl 8.5i 'bp