JVM-虛擬機參數

一、虛擬機參數

  • -XX:+PrintGC 每次觸發GC的時候打印相關日誌
  • -XX:+UseSerialGC 串行回收
  • -XX:+PrintGCDetails 更詳細的GC日誌
  • -Xms 堆初始值
  • -Xmx 堆最大可用值
  • -Xmn 新生代堆最大可用值
  • -XX:NewRatio 新生代與老年代關係,最好是3或者4
  • -Xss規定了每個線程堆棧的大小。一般情況下256K是足夠了。影響了此進程中併發線程數大小。
  • -XX:SurvivorRatio 用來設置新生代中eden空間和from/to空間的比例. 含以
    -XX:SurvivorRatio=eden/from=den/to

    總結:在實際工作中,我們可以直接將初始的堆大小與最大堆大小相等,
    這樣的好處是可以減少程序運行時垃圾回收次數,從而提高效率。

1.1 堆內存空間的知識

官方說明附鏈接: 垃圾回收機制

  • 初始堆大小
    計算機上物理內存的1/64的較大值或合理的最小值。在Java SE 5.0之前,默認的初始堆大小是一個合理的最小值,隨平臺的不同而不同。您可以使用-Xms命令行選項覆蓋此默認設置。

  • 最大堆大小
    小於物理內存的1/4或1GB。在Java SE 5.0之前,默認的最大堆大小爲64MB。您可以使用-Xmx命令行選項覆蓋此默認設置。

二、內存溢出

2.1 堆內存溢出

將jvm參數設置爲10M,循環創建1M對象十次,拋出內存溢出異常。
解決辦法很簡單,把內存加大即可,但也不是隨便加,要根據調優方法調。可參照JVM調優總結
內存溢出異常

2.2棧內存溢出

棧內存溢出的出現現象是:在方法中循環調用方法,會導致棧內存溢出。
最大深度是不確定的,不過可以通過設置JVM參數將深度提升。 -Xss?M 設置堆棧內存大小
棧內存溢出錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章