8 Temmuz 2019 Pazartesi

java komutu -XX Seçenekleri

-XX:+AllowVectorizeOnDemand
Bir örnek burada

-XX:+CMSScavengeBeforeRemark seçeneği
Örnek ver

 -XX:+CompactStrings seçeneği
CompactString özelliği Java 9'dan itibaren otomatik olarak etkin geliyor.  Ancak -XX seçenekleri ile de kontrol edilebiliyor.

Artı işareti ile kullanılırsa , yani  -XX:+CompactStrings , String'ler char[] yerine byte[] şeklinde saklanır.
Eksi işareti ile kullanılırsa , yani  -XX:-CompactStrings ,  String'ler eskisi gibi char[] şeklinde saklanır

-XX:CompressedClassSpaceSize seçeneği
Örnek ver

-XX:HeapDumpOnCtrlBreak seçeneği
Şöyle yaparız.
-XX:+HeapDumpOnCtrlBreak writes heap dump together with thread dump on CTRL+BREAK
-XX:+HeapDumpOnOutOfMemoryError seçeneği
java komutu OutOfMemoryError Seçenekleri yazısına taşıdım.

-XX:IgnoreUnrecognizedVMOptions seçeneği
Tanınmayan seçeneklerin dikkate alınmamasını sağlar.

-XX:InitialTenuringThreshold:
Açıklaması şöyle
The initial tenuring threshold.
Survivor space'te kaç minor collection bekleneceğini gösterir. Akış şöyle
new generation -> survivor space -> old space

-XX:MaxTenuringThreshold: 
Maximum tenuring threshold. The default value is 15 for the parallel collector and is 4 for CMS.

-XX:MaxDirectMemorySize seçeneği
java komutu Off-heap İçin -X Seçenekleri yazısına taşıdım

-XX:MaxMetaspaceSize seçeneği
Örnek ver

-XX:MaxNewSize
Young generation için kullanılan en fazla heap büyüklüğünü ayarlar.

-XX:MaxPermSize

-XX:NewSize
Young generation için kullanılan başlangıç heap büyüklüğünü ayarlar.

--XX:OmitStackTraceInFastThrow
Şöyle yaparız.
-Xms128m
-Xmx10G
-XX:ReservedCodeCacheSize=240m
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-XX:OnError=path_to_some_script.sh
Açıklaması şöyle
Same as -XX:OnOutofMemoryError before, but for more generic exceptions.
-XX:OnOutOfMemoryError=path_to_some_script.sh
java komutu OutOfMemoryError Seçenekleri yazısına taşıdım.

-XX:+PerfDisableSharedMem seçeneği
Bu seçeneği kullanmamak lazım çünkü visualvm ile uygulamayı incelemeyi kapatıyor.. Açıklaması şöyle
Disable jvm statistics
-XX:PermSize

--XX:PrintFlagsFinal seçeneği

Örnek
Şöyle yaparız.
java -Xmx32766m -XX:+PrintFlagsFinal 2> /dev/null | grep UseCompressedOops
bool UseCompressedOops := true                                {lp64_product}
-XX:-PrintTenuringDistribution
Print tenuring age information.

-XX:ReservedCodeCacheSize seçeneği
Örnek ver

-XX:+ScavengeBeforeFullGC seçeneği
Örnek ver

-XX:+ShowCodeDetailsInExceptionMessages
NullPointerException fırlatıldığında hangi değişkenden dolayı olduğunu gösterir. Java 14 ile geliyor. Ancak Java 15'ten sonra bu seçeneğe gerek yok. 
Örnek
Elimizde şöyle bir kod olsun. getBaz() null değeri dönüyor olsun
var value = foo.getBar().getBaz().toLowerCase();
Java 14'e kadar çıktı olarak şunu alırız
Exception in thread "main" java.lang.NullPointerException
  at ...
Java 14 ve Java 15'ten sonra şu çıktıyı alırız
Exception in thread "main" java.lang.NullPointerException: 
  Cannot invoke "String.toLowerCase()" because the return value of 
"ch.frankel.blog.Bar.getBaz()" is null
  at  ...
-XX:+UseCMSInitiationOccupancyFraction seçeneği
Örnek
Şöyle yaparız.
-XX:CMSInitiatingOccupancyFraction=70

-XX:+UseCMSInitiationOccupancyOnly seçeneği
Örnek ver


-XX:+UseConcMarkSweepGC
Farklı bir garbage collector kullanmamızı sağlar. Şöyle yaparız.
-XX:+UseConcMarkSweepGC
-XX:+UseG1GC seçeneği
G1 en yeni garbage collector. Mümkünse bu seçeneği kullanmak lazım. G1 Garbage Collector yazısına taşıdım.

-XX:+UseStringDeduplication seçeneği
Açıklaması şöyle. Sadece G1 GC ile çalışır. Java 8 Update 20'den itibaren kullanılabilir.
When you pass this JVM argument during application startup, JVM will try to eliminate duplicate strings as part of the garbage collection process. During the garbage collection process, the JVM inspects all the objects in memory, thus as part of that process, it tries to identify duplicate strings among them and tries to eliminate it.
- XX:StringDeduplicationAgeThreshold seçeneği
Açıklaması şöyle.
By default, strings become eligible for deduplication if they have survived three GC runs. It can be changed by passing this  -XX:StringDeduplicationAgeThreshold.
 -XX:+PrintStringDeduplicationStatistics seçeneği
Açıklaması şöyle.
If you would like to see string deduplication statistics, such as how much time it took to run, how much duplicate strings were evacuated, how much savings you gained, you may pass the -XX:+PrintStringDeduplicationStatistics JVM argument. In the error console, statistics will be printed.





Hiç yorum yok:

Yorum Gönder