一、GC概要:
JVM堆相關知識
??? 為什么先說JVM堆?
??? JVM的堆是Java對象的活動空間,程序中的類的對象從中分配空間,其存儲著正在運行著的應用程序用到的所有對象。這些對象的建立方式就是那些new一類的操作,當對象無用后,是GC來負責這個無用的對象(地球人都知道)。
JVM堆
??? (1) 新域:存儲所有新成生的對象
??? (2) 舊域:新域中的對象,經過了一定次數的GC循環后,被移入舊域
??? (3)永久域:存儲類和方法對象,從配置的角度看,這個域是獨立的,不包括在JVM堆內。默認為4M。
新域會被分為3個部分:1.第一個部分叫Eden。(伊甸園??可能是因為亞當和夏娃是人類最早的活動對象?)2.另兩個部分稱為輔助生存空間(幼兒園),我這里一個稱為A空間(From sqace),一個稱為B空間(To Space)。

GC淺談:
GC的工作目的很明確:在堆中,找到已經無用的對象,并把這些對象占用的空間收回使其可以重新利用.大多數垃圾回收的算法思路都是一致的:把所有對象組成一個集合,或可以理解為樹狀結構,從樹根開始找,只要可以找到的都是活動對象,如果找不到,這個對象就是凋零的昨日黃花,應該被回收了。
在sun 的文檔說明中,對JVM堆的新域,是采用coping算法,該算法的提出是為了克服句柄的開銷和解決堆碎片的垃圾回收。它開始時把堆分成一個對象面和多個空閑面,程序從對象面為對象分配空間,當對象滿了,基于 coping算法的垃圾收集就從根集中掃描活動對象,并將每個活動對象復制到空閑面(使得活動對象所占的內存之間沒有空閑洞),這樣空閑面變成了對象面,原來的對象面變成了空閑面,程序會在新的對象面中分配內存。
對于新生成的對象,都放在Eden中;當Eden充滿時(小孩太多了),GC將開始工作,首先停止應用程序的運行,開始收集垃圾,把所有可找到的對象都復制到A空間中,一旦當A空間充滿,GC就把在A空間中可找到的對象都復制到B空間中(會覆蓋原有的存儲對象),當B空間滿的時間,GC就把在B空間中可找到的對象都復制到A空間中,AB在這個過程中互換角色,那位客官說了:拷來拷去,煩不煩啊?什么時候是頭?您別急,在活動對象經過一定次數的GC操作后,這些活動對象就會被放到舊域中。對于這些活動對象,新域的幼兒園生活結束了。
新域為什么要這么折騰?
起初在這塊我也很迷糊,又查了些資料,原來是這樣:應用程序生成的絕大部分對象都是短命的,copying算法最理想的狀態是,所有移出Eden的對象都會被收集,因為這些都是短命鬼,經過一定次數的GC后應該被收集,那么移入到舊域的對象都是長命的,這樣可以防止AB空間的來回復制影響應用程序。
實際上這種理想狀態是很難達到的,應用程序中不可避免地存在長命的對象,copying算法的發明者要這些對象都盡量放在新域中,以保證小范圍的復制,壓縮舊域的開銷可比新域中的復制大得多(舊域在下面說)。
對于舊域,采用的是tracing算法的一種,稱為標記-清除-壓縮收集器,注意,這有一個壓縮,這是個開銷挺大的操作。
垃圾回收主要是對Young Generation塊和Old Generation塊內存進行回收,YG用來放新產生的對象,經過幾次回收還
二、Gc 流程:
[older generation][survivor 1][survivor 2][eden]
*young generation=eden + survivor
1.當eden滿了,觸發young GC;
2.young GC做2件事:一,去掉一部分沒用的object;二,把老的還被引用的object發到survior里面,等下幾次GC以后,survivor再放到old里面。
3.當old滿了,觸發full GC。full GC很消耗內存,把old,young里面大部分垃圾回收掉。這個時候用戶線程都會被block。
三、young generation比例越大,不一定最好。
將young的大小設置為大于總堆大小的一半時會造成效率低下。如果設置得過小,又會因為young generation收集程序不得不頻繁運行而造成瓶頸。
四、總結
從上面的推導可以得出很多結論,下面是前輩的經驗總結與自已的認識
1.JVM堆的大小決定了GC的運行時間。如果JVM堆的大小超過一定的限度,那么GC的運行時間會很長。
2.對象生存的時間越長,GC需要的回收時間也越長,影響了回收速度。
3.大多數對象都是短命的,所以,如果能讓這些對象的生存期在GC的一次運行周期內,wonderful!
4.應用程序中,建立與釋放對象的速度決定了垃圾收集的頻率。
5.如果GC一次運行周期超過3-5秒,這會很影響應用程序的運行,如果可以,應該減少JVM堆的大小了。
6.前輩經驗之談:通常情況下,JVM堆的大小應為物理內存的80%。
五、看案例:
jmap -heap 2343
Attaching to process ID 2343, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0-b16
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
?? MinHeapFreeRatio = 40
?? MaxHeapFreeRatio = 70
?? MaxHeapSize????? = 4294967296 (4096.0MB)
?? NewSize????????? = 2686976 (2.5625MB)
?? MaxNewSize?????? = -65536 (-0.0625MB)
?? OldSize????????? = 5439488 (5.1875MB)
?? NewRatio???????? = 2????????????????? (YG,OG 大小比為1:2)
?? SurvivorRatio??? = 8
?? PermSize???????? = 21757952 (20.75MB)
?? MaxPermSize????? = 268435456 (256.0MB)
Heap Usage:
PS Young Generation
Eden Space:
?? capacity = 1260060672 (1201.6875MB)
?? used???? = 64868288 (61.86322021484375MB)
?? free???? = 1195192384 (1139.8242797851562MB)
?? 5.148028935546367% used
From Space:
?? capacity = 85524480 (81.5625MB)
?? used???? = 59457648 (56.70323181152344MB)
?? free???? = 26066832 (24.859268188476562MB)
?? 69.52120375359195% used
To Space:
?? capacity = 85852160 (81.875MB)
?? used???? = 0 (0.0MB)
?? free???? = 85852160 (81.875MB)
?? 0.0% used
~~~~~~~~~~~~~~~~~~~~~~~~~~這三塊為上面所說的YG大小和使用情況
PS Old Generation
?? capacity = 2291138560 (2185.0MB)
?? used???? = 1747845928 (1666.8757705688477MB)
?? free???? = 543292632 (518.1242294311523MB)
?? 76.28722062099989% used
~~~~~~~~~~~~~~~~~~~~~~~~~~OG大小和使用情況
PS Perm Generation
?? capacity = 108265472 (103.25MB)
?? used???? = 107650712 (102.6637191772461MB)
?? free???? = 614760 (0.5862808227539062MB)
?? 99.43217353728436% used
這臺機器簡單說YG內存1G,OG內存2G,總內存4G
在這樣的配置下,GC運行情況:
jstat -gcutil -h5 2343 4s 100
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT?
79.82?? 0.00? 75.34? 78.55? 99.44?? 7646 1221.668?? 398 2052.993 3274.661
? 0.00? 79.52?? 0.62? 78.63? 99.44?? 7647 1221.782?? 398 2052.993 3274.775 這里發生了一次YG GC,也就是MinorGC,耗時0.12s
? 0.00? 79.52? 28.95? 78.63? 99.44?? 7647 1221.782?? 398 2052.993 3274.775
? 0.00? 79.52? 46.34? 78.63? 99.44?? 7647 1221.782?? 398 2052.993 3274.775
同時可以看到總共進行了398次Major GC 總耗時2052.993 所以每次Major GC時間為:2052.993/398=5.16秒
這是個很嚴重的問題,進行Major GC的時候程序會暫停,無法響應,居然會暫停5秒多,這誰都無法接受吧

同樣Minor GC進行了7647次,總用時1221.782 平均時間為0.16秒,算是可以接受
再來看看修改配置后:
jmap -heap 14103
Attaching to process ID 14103, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0-b16
using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC
Heap Configuration:
?? MinHeapFreeRatio = 40
?? MaxHeapFreeRatio = 70
?? MaxHeapSize????? = 4294967296 (4096.0MB)
?? NewSize????????? = 536870912 (512.0MB)
?? MaxNewSize?????? = 536870912 (512.0MB)
?? OldSize????????? = 5439488 (5.1875MB)
?? NewRatio???????? =4???????????????????????? YG:OG????????? 1:4??????
?? SurvivorRatio??? = 8
?? PermSize???????? = 268435456 (256.0MB)
?? MaxPermSize????? = 268435456 (256.0MB)
Heap Usage:
New Generation (Eden + 1 Survivor Space):
?? capacity = 483196928 (460.8125MB)
?? used???? = 428284392 (408.4438247680664MB)
?? free???? = 54912536 (52.368675231933594MB)
?? 88.63557841162434% used
Eden Space:
?? capacity = 429522944 (409.625MB)
?? used???? = 404788608 (386.0364990234375MB)
?? free???? = 24734336 (23.5885009765625MB)
?? 94.24144010337199% used
From Space:
?? capacity = 53673984 (51.1875MB)
?? used???? = 23495784 (22.407325744628906MB)
?? free???? = 30178200 (28.780174255371094MB)
?? 43.77499534970238% used
To Space:
?? capacity = 53673984 (51.1875MB)
?? used???? = 0 (0.0MB)
?? free???? = 53673984 (51.1875MB)
?? 0.0% used
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~YG 大小和使用狀態
concurrent mark-sweep generation:
?? capacity = 3758096384 (3584.0MB)
?? used???? = 1680041600 (1602.2125244140625MB)
?? free???? = 2078054784 (1981.7874755859375MB)
?? 44.70459052494594% used
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~OG 大小和使用狀態
Perm Generation:
?? capacity = 268435456 (256.0MB)
?? used???? = 128012184 (122.0819320678711MB)
?? free???? = 140423272 (133.9180679321289MB)
?? 47.688254714012146% used
在這個配置下,GC運行情況:
jstat -gcutil -h5 14103 4s 100
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT?
47.49?? 0.00? 64.82? 46.08? 47.69? 20822 2058.631??? 68?? 22.734 2081.365
? 0.00? 37.91? 38.57? 46.13? 47.69? 20823 2058.691??? 68?? 22.734 2081.425 這里發生了一次YG GC,也就是MinorGC,耗時0.06s
46.69?? 0.00? 15.19? 46.18? 47.69? 20824 2058.776??? 68?? 22.734 2081.510
46.69?? 0.00? 74.59? 46.18? 47.69? 20824 2058.776??? 68?? 22.734 2081.510
? 0.00? 40.29? 19.95? 46.24? 47.69? 20825 2058.848??? 68?? 22.734 2081.582
MajorGC平均時間:22.734/68=0.334秒(上面是5秒多吧)
MinorGC平均時間:2058.691/20823=0.099秒(比上面略少)
====================================
我自己的實踐:
jmap -heap 9421
Attaching to process ID 9421, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 11.0-b16
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
?? MinHeapFreeRatio = 40
?? MaxHeapFreeRatio = 70
?? MaxHeapSize????? = 1073741824 (1024.0MB)
?? NewSize????????? = 2686976 (2.5625MB)
?? MaxNewSize?????? = -65536 (-0.0625MB)
?? OldSize????????? = 5439488 (5.1875MB)
?? NewRatio???????? = 2
?? SurvivorRatio??? = 8
?? PermSize???????? = 21757952 (20.75MB)
?? MaxPermSize????? = 88080384 (84.0MB)
Heap Usage:
PS Young Generation
Eden Space:
?? capacity = 357498880 (340.9375MB)
?? used???? = 107925472 (102.92575073242188MB)
?? free???? = 249573408 (238.01174926757812MB)
?? 30.1890377950275% used
From Space:
?? capacity = 196608 (0.1875MB)
?? used???? = 131072 (0.125MB)
?? free???? = 65536 (0.0625MB)
?? 66.66666666666667% used
To Space:
?? capacity = 196608 (0.1875MB)
?? used???? = 0 (0.0MB)
?? free???? = 196608 (0.1875MB)
?? 0.0% used
PS Old Generation
?? capacity = 715849728 (682.6875MB)
?? used???? = 492688632 (469.86449432373047MB)
?? free???? = 223161096 (212.82300567626953MB)
?? 68.82570639183088% used
PS Perm Generation
?? capacity = 65667072 (62.625MB)
?? used???? = 65290240 (62.265625MB)
?? free???? = 376832 (0.359375MB)
?? 99.42614770459082% used
jstat -gcutil -h5 9421 4s 100
S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 8.09 100.00 100.00? 41.96? 99.74??? 248??? 5.076???? 3??? 1.245??? 6.321
? 0.00? 58.57? 80.00? 45.50? 99.79??? 249??? 5.262???? 3??? 1.245??? 6.507
? 0.00? 99.82? 31.59? 50.11? 99.85??? 251??? 5.397???? 3??? 1.245??? 6.642
? 0.00? 46.63? 20.95? 53.99? 99.88??? 253??? 5.540???? 3??? 1.245??? 6.785
? 0.00? 48.99? 11.09? 58.40? 99.91??? 255??? 5.655???? 3??? 1.245??? 6.900
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
44.40?? 0.00? 91.77? 60.34? 99.93??? 256??? 5.708???? 3??? 1.245??? 6.953
52.11?? 0.00? 97.06? 64.20? 99.96??? 258??? 5.863???? 3??? 1.245??? 7.108
? 0.00? 49.42?? 1.33? 70.69? 99.99??? 261??? 6.036???? 3??? 1.245??? 7.281
? 0.00? 47.40? 45.12? 74.71? 99.99??? 263??? 6.150???? 3??? 1.245??? 7.395
52.18?? 0.00? 12.74? 80.69? 99.72??? 266??? 6.329???? 3??? 1.245??? 7.574
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 70.73?? 6.79? 87.14? 99.73??? 269??? 6.520???? 3??? 1.245??? 7.765
70.69? 13.71 100.00? 94.26? 99.76??? 273??? 6.700???? 3??? 1.245??? 7.945
? 0.00? 69.51? 88.74? 30.83? 72.99??? 275??? 6.852???? 4??? 2.356??? 9.208
? 0.00? 65.62? 52.94? 40.22? 73.00??? 279??? 7.087???? 4??? 2.356??? 9.443
? 0.00? 78.90?? 8.30? 49.07? 73.05??? 283??? 7.316???? 4??? 2.356??? 9.672
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
72.21?? 0.00? 98.52? 56.17? 73.15??? 286??? 7.496???? 4??? 2.356??? 9.851
79.11?? 0.00? 76.17? 65.63? 73.19??? 290??? 7.746???? 4??? 2.356?? 10.102
71.99?? 0.00? 60.12? 75.09? 73.23??? 294??? 7.989???? 4??? 2.356?? 10.344
85.60?? 0.00? 18.82? 83.84? 73.25??? 298??? 8.232???? 4??? 2.356?? 10.587
87.86?? 0.00?? 0.00? 93.45? 73.29??? 302??? 8.484???? 4??? 2.356?? 10.840
??? 0.00? 83.55?? 3.35? 56.76? 83.69??? 611?? 26.403??? 15?? 12.264?? 38.667
S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 83.10?? 7.02? 34.12? 73.29??? 305??? 8.650???? 5??? 3.241?? 11.891
89.47?? 0.00? 90.17? 41.39? 73.30??? 308??? 8.830???? 5??? 3.241?? 12.071
86.25?? 0.00? 58.98? 50.80? 73.30??? 312??? 9.064???? 5??? 3.241?? 12.305
85.46?? 0.00? 32.03? 59.68? 73.30??? 316??? 9.297???? 5??? 3.241?? 12.538
93.95?? 0.00? 14.45? 68.01? 73.31??? 320??? 9.526???? 5??? 3.241?? 12.767
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
91.60?? 0.00?? 6.11? 77.60? 73.31??? 324??? 9.771???? 5??? 3.241?? 13.012
? 0.00? 86.32? 96.42? 84.69? 73.32??? 327??? 9.957???? 5??? 3.241?? 13.198
? 0.00? 86.01? 74.73? 93.81? 73.32??? 331?? 10.202???? 5??? 3.241?? 13.443
93.99?? 0.00? 82.41? 35.22? 73.32??? 334?? 10.360???? 6??? 4.118?? 14.478
64.49?? 0.00? 67.73? 44.38? 73.33??? 338?? 10.587???? 6??? 4.118?? 14.705
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
73.66?? 0.00? 59.60? 53.02? 73.33??? 342?? 10.816???? 6??? 4.118?? 14.934
67.98?? 0.00? 58.48? 61.64? 73.33??? 346?? 11.046???? 6??? 4.118?? 15.164
93.45?? 0.00? 60.51? 69.44? 73.35??? 350?? 11.267???? 6??? 4.118?? 15.385
68.97?? 0.00? 48.55? 78.65? 73.41??? 354?? 11.501???? 6??? 4.118?? 15.619
59.29?? 0.00? 44.13? 86.15? 73.46??? 358?? 11.724???? 6??? 4.118?? 15.842
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
79.64?? 0.00? 39.27? 94.87? 73.50??? 362?? 11.966???? 6??? 4.118?? 16.084
? 0.00? 81.88? 51.52? 37.67? 73.53??? 365?? 12.125???? 7??? 4.993?? 17.118
? 0.00? 83.24? 47.83? 46.27? 73.58??? 369?? 12.349???? 7??? 4.993?? 17.342
? 0.00? 74.59? 47.45? 55.01? 73.62??? 373?? 12.567???? 7??? 4.993?? 17.561
? 0.00? 99.80? 44.10? 63.52? 73.67??? 377?? 12.798???? 7??? 4.993?? 17.791
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 90.08? 35.65? 72.08? 73.72??? 381?? 13.031???? 7??? 4.993?? 18.024
? 0.00? 99.90? 31.43? 80.83? 73.74??? 385?? 13.261???? 7??? 4.993?? 18.254
? 0.00? 85.22? 20.60? 89.28? 73.81??? 389?? 13.497???? 7??? 4.993?? 18.491
? 0.00? 77.10?? 0.00? 99.05? 73.85??? 393?? 13.755???? 8??? 4.993?? 18.748
90.96?? 0.00?? 4.04? 35.20? 73.71??? 396?? 13.909???? 8??? 6.080?? 19.990
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
93.00?? 0.00?? 0.00? 44.42? 73.71??? 400?? 14.146???? 8??? 6.080?? 20.226
81.70?? 0.00?? 0.00? 53.23? 73.71??? 404?? 14.367???? 8??? 6.080?? 20.448
99.85?? 0.00?? 0.00? 62.52? 73.71??? 408?? 14.611???? 8??? 6.080?? 20.691
? 0.00? 62.91? 18.78? 72.16? 73.71??? 413?? 14.860???? 8??? 6.080?? 20.940
? 0.00? 75.70? 23.27? 81.36? 73.71??? 417?? 15.097???? 8??? 6.080?? 21.177
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 81.57? 28.42? 90.71? 73.71??? 421?? 15.342???? 8??? 6.080?? 21.423
? 0.00?? 0.00? 52.69? 35.44? 73.72??? 424?? 15.531???? 9??? 6.958?? 22.488
82.11?? 0.00? 59.73? 42.35? 73.72??? 428?? 15.741???? 9??? 6.958?? 22.698
88.81?? 0.00? 61.04? 51.10? 73.72??? 432?? 15.967???? 9??? 6.958?? 22.924
94.19?? 0.00? 61.37? 60.14? 73.72??? 436?? 16.202???? 9??? 6.958?? 23.160
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
82.58?? 0.00? 64.01? 70.14? 73.72??? 440?? 16.447???? 9??? 6.958?? 23.405
84.14?? 0.00? 61.41? 79.38? 73.72??? 444?? 16.685???? 9??? 6.958?? 23.642
84.06?? 0.00? 58.31? 88.32? 73.72??? 448?? 16.921???? 9??? 6.958?? 23.879
91.88?? 0.00? 61.43? 97.22? 73.72??? 452?? 17.162???? 9??? 6.958?? 24.120
? 0.00? 99.79? 91.67? 37.74? 73.72??? 455?? 17.320??? 10??? 7.829?? 25.148
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 79.75? 87.00? 46.92? 73.72??? 459?? 17.547??? 10??? 7.829?? 25.376
? 0.00? 99.86? 81.54? 55.64? 73.72??? 463?? 17.778??? 10??? 7.829?? 25.606
? 0.00? 84.32? 82.86? 64.72? 73.72??? 467?? 18.012??? 10??? 7.829?? 25.841
? 0.00? 99.67? 82.29? 73.75? 73.73??? 471?? 18.245??? 10??? 7.829?? 26.073
? 0.00? 86.60? 81.29? 82.54? 73.73??? 475?? 18.483??? 10??? 7.829?? 26.312
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 68.89? 94.69? 91.98? 73.73??? 479?? 18.719??? 10??? 7.829?? 26.548
? 0.00?? 0.00? 68.19? 35.36? 73.84??? 482?? 18.908??? 11??? 8.706?? 27.614
76.88?? 0.00? 23.38? 42.21? 73.84??? 486?? 19.132??? 11??? 8.706?? 27.838
80.27?? 0.00?? 8.75? 51.58? 73.84??? 490?? 19.371??? 11??? 8.706?? 28.077
68.93?? 0.00? 11.55? 60.60? 73.85??? 494?? 19.596??? 11??? 8.706?? 28.303
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
73.43?? 0.00?? 0.00? 69.68? 73.85??? 498?? 19.830??? 11??? 8.706?? 28.536
83.17?? 0.00?? 0.00? 78.34? 73.85??? 502?? 20.065??? 11??? 8.706?? 28.771
84.48?? 0.00?? 0.00? 87.19? 73.85??? 506?? 20.297??? 11??? 8.706?? 29.003
82.91?? 0.00?? 6.82? 96.39? 73.85??? 510?? 20.540??? 11??? 8.706?? 29.246
? 0.00? 81.68? 15.92? 33.35? 76.57??? 513?? 20.710??? 12??? 9.622?? 30.332
? S0???? S1???? E????? O????? P???? YGC???? YGCT??? FGC??? FGCT???? GCT
? 0.00? 84.43? 17.52? 42.34? 76.57??? 517?? 20.940??? 12??? 9.622?? 30.562
? 0.00? 83.29? 15.55? 51.23? 76.57??? 521?? 21.172??? 12??? 9.622?? 30.794
? 0.00? 88.74? 17.86? 60.21? 76.57??? 525?? 21.405??? 12??? 9.622?? 31.027
? 0.00? 99.94?? 9.69? 69.47? 76.57??? 529?? 21.645??? 12??? 9.622?? 31.267
? 0.00? 65.66? 12.97? 78.50? 76.57??? 533?? 21.879??? 12??? 9.622?? 31.501
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
