當前位置:首頁 » 編程語言 » java的內存溢出

java的內存溢出

發布時間: 2022-08-17 04:04:30

java常見的幾種內存溢出

1.jvm管理的內存大致包括三種不同類型的內存區 域:Permanent Generation space(永久保存區域)、Heap space(堆區域)、Java Stacks(Java棧)。
2.Java程序的每個線程中都有一個獨立的堆棧。容易發生內存溢出問題的內存空間包括:Permanent Generation space和Heap space。
3.因為字體多,所以提供參考鏈接:
【java中三種常見內存溢出錯誤的處理方法 】http://www.cnblogs.com/lcword/p5857909.html

⑵ java內存溢出

1.Heap線程公有
存放實例對象
是GC主要管理區域,因此可以更細致的劃分為:新生代、老年代
再細致一點劃分:Eden區、From Survivor區、To Survivor區
內存空間:可以物理上不連續、邏輯上連續即可。
Method Area
線程公有
主要存儲:類信息、常量、靜態變數、編譯後的代碼
運行時常量池
主要存儲:編譯期的字面量以及符號引用
具有動態性,即可以在運行時將常量放入池中。
2.VM Stack線程私有
主要包括:

局部變數表:存放編譯期的各種基本數據類型、對象引用、returnAddress類型
操作數棧:每一個元素可以為任意的java類型,32位數據類型所佔容量為1,64位數據類型所佔容量為2
動態連接:class文件的常量池中有大量的符號引用,這些符號引用有一部分是在類載入階段或者在第一次使用的時候就轉換為直接引用,這部分成為靜態解析。另一部分是每一次運行的時候轉化為直接引用,這部分即為動態連接。
方法出口:例如A方法中調用了B方法,B方法的返回值壓入A方法的棧幀中。
3.Native Method Stack線程私有
與VM Stack相似,唯一區別在於該棧為Native方法服務。
Hot Spot 將VM Stack 與 Native Method Stack 合而為一。
Program Counter Register
線程私有
用於記錄線程執行位元組碼的指令的地址。
Direct Memory
NIO中使用直接內存,提高效率。
對象創建過程
首先當虛擬機遇到一條new指令時,先去檢查該符號引用代表的類是否已經完成類載入,若未完成,則執行以下步驟
類載入
為對象分配內存
分配方式:指針碰撞/空閑列表
線程安全:CAS解決
虛擬機初始化內存空間
虛擬機對對象進行必要的設置
執行完成初始化
對象創建完成
第一部分用於存儲對象自身的運行時數據,如哈希碼(HashCode)、GC 分代年齡、鎖狀態標志、線程持有的鎖、偏向線程 ID、偏向時間戳、對象分代年齡,這部分信息稱為「Mark Word」;Mark Word 被設計成一個非固定的數據結構以便在極小的空間內存儲盡量多的信息,它會根據自己的狀態復用自己的存儲空間。
第二部分是類型指針,即對象指向它的類元數據的指針,虛擬機通過這個指針來確定這個對象是哪個類的實例;
如果對象是一個 Java 數組,那在對象頭中還必須有一塊用於記錄數組長度的數據。因為虛擬機可以通過普通 Java 對象的元數據信息確定 Java 對象的大小,但是從數組的元數據中無法確定數組的大小。
在 32 位系統下,存放 Class 指針的空間大小是 4 位元組,Mark Word 空間大小也是4位元組,因此頭部就是 8 位元組,如果是數組就需要再加 4 位元組表示數組的長度

⑶ Java程序內存溢出怎麼修改

for循環裡面寫:{
addBatch (你的insert語句 )
這里可以控制1萬條做一次提交
if(i%10000==0) ps.executeBatch();
//清空batch
ps.clearBatch ()
}
這樣就不會頻繁調用insert操作資料庫,100萬也就操作100次提交

⑷ 什麼是Java中的內存溢出

沒有被回收,說明變數引用沒有被釋放,這個要看程序的

⑸ java內存溢出怎麼解

第一對所有的代碼包括頁面中的java代碼都進行一遍徹底的回顧檢查,
1.對那些靜態(static)的對象要特別留神,特別是類型為Map,List,Set的,靜態的變數會一直駐存在內存中,生命周期比較長,不會被垃圾器回收。
2.對於代碼,要審查是否生成了大量的冗餘的對象,還有一些邏輯業務處理的類,
演算法是否過於復雜,調整演算法,對於代碼認真審查,再仔細重構一遍代碼,能提高代碼質量,提高程序運行穩定性。

3.Java中的內存溢出大都是因為棧中的變數太多了。其實內存有的是。建議不用的盡量設成null以便回收,多用局部變數,少用成員變數。

1),變數所包含的對象體積較大,佔用內存較多。
2),變數所包含的對象生命周期較長。
3),變數所包含的對象數據穩定。
4),該類的對象實例有對該變數所包含的對象的共享需求。
4.在我的程序中對靜態變數的優化後,使程序佔用內存量至少提升了5k-10k。所以也不容忽視。

第二還有就是String類相關的東西:
1.字元串累加的時候一定要用StringBuffer的append方法,不要使用+操作符連接兩個字元串。差別很大。而且在循環或某些重復執行的動作中不要去創建String對象,因為String對象是要用StringBuffer對象來處理的,一個String對象應該是產生了 3個對象(大概是這樣:))。
2.字元串length()方法來取得字元串長度的時候不要把length放到循環中,可以在循環外面對其取值。(包括vector的size方法)。特別是循環次數多的時候,盡量把length放到循環外面。

⑹ java內存溢出的問題如何排查

java程序大家都知道,內存溢出是經常見的錯誤,下面從基本的開始分析!
內存溢出是由於沒被引用的對象(垃圾)過多造成JVM沒有及時回收,造成的內存溢出。如果出現這種現象可行代碼排查:
一)是否App中的類中和引用變數過多使用了Static修飾 如public staitc Student s;在類中的屬性中使用 static修飾的最好只用基本類型或字元串。如public static int i = 0; //public static String str;
二)是否App中使用了大量的遞歸或無限遞歸(遞歸中用到了大量的建新的對象)
三)是否App中使用了大量循環或死循環(循環中用到了大量的新建的對象)
四)檢查App中是否使用了向資料庫查詢所有記錄的方法。即一次性全部查詢的方法,如果數據量超過10萬多條了,就可能會造成內存溢出。所以在查詢時應採用「分頁查詢」。
五)檢查是否有數組,List,Map中存放的是對象的引用而不是對象,因為這些引用會讓對應的對象不能被釋放。會大量存儲在內存中。
六)檢查是否使用了「非字面量字元串進行+」的操作。因為String類的內容是不可變的,每次運行"+"就會產生新的對象,如果過多會造成新String對象過多,從而導致JVM沒有及時回收而出現內存溢出。
如String s1 = "My name";
String s2 = "is";
String s3 = "xuwei";
String str = s1 + s2 + s3 +.........;這是會容易造成內存溢出的
但是String str = "My name" + " is " + " xuwei" + " nice " + " to " + " meet you"; //但是這種就不會造成內存溢出。因為這是」字面量字元串「,在運行"+"時就會在編譯期間運行好。不會按照JVM來執行的。
在使用String,StringBuffer,StringBuilder時,如果是字面量字元串進行"+"時,應選用String性能更好;如果是String類進行"+"時,在不考慮線程安全時,應選用StringBuilder性能更好。
知道原因了,解決起來就非常簡單了。

⑺ java程序內存溢出一般什麼原因

JVM內存設置小了 或者一次性讀的數據過大 例如list vertor

一、內存溢出類型

1、java.lang.OutOfMemoryError: PermGen space

JVM管理兩種類型的內存,堆和非堆。堆是給開發人員用的上面說的就是,是在JVM啟動時創建;非堆是留給JVM自己用的,用來存放類的信息的。它和堆不同,運行期內GC不會釋放空間。如果web
app用了大量的第三方jar或者應用有太多的class文件而恰好MaxPermSize設置較小,超出了也會導致這塊內存的佔用過多造成溢出,或者tomcat熱部署時侯不會清理前面載入的環境,只會將context更改為新部署的,非堆存的內容就會越來越多。

PermGen space的全稱是Permanent Generation
space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,Class在被Loader時就會被放到PermGen
space中,它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen
space進行清理,所以如果你的應用中有很CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web伺服器對JSP進行pre
compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤信息了。

一個最佳的配置例子:(經過本人驗證,自從用此配置之後,再未出現過tomcat死掉的情況)

set JAVA_OPTS=-Xms800m -Xmx800m -XX:PermSize=128M -XX:MaxNewSize=256m
-XX:MaxPermSize=256m

2、java.lang.OutOfMemoryError: Java heap space

第一種情況是個補充,主要存在問題就是出現在這個情況中。其默認空間(即-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。如果內存剩餘不到40%,JVM就會增大堆到Xmx設置的值,內存剩餘超過70%,JVM就會減小堆到Xms設置的值。所以伺服器的Xmx和Xms設置一般應該設置相同避免每次GC後都要調整虛擬機堆的大小。假設物理內存無限大,那麼JVM內存的最大值跟操作系統有關,一般32位機是1.5g到3g之間,而64位的就不會有限制了。

注意:如果Xms超過了Xmx值,或者堆最大值和非堆最大值的總和超過了物理內存或者操作系統的最大限制都會引起伺服器啟動不起來。

垃圾回收GC的角色

JVM調用GC的頻度還是很高的,主要兩種情況下進行垃圾回收:

當應用程序線程空閑;另一個是java內存堆不足時,會不斷調用GC,若連續回收都解決不了內存堆不足的問題時,就會報out of
memory錯誤。因為這個異常根據系統運行環境決定,所以無法預期它何時出現。

根據GC的機制,程序的運行會引起系統運行環境的變化,增加GC的觸發機會。

為了避免這些問題,程序的設計和編寫就應避免垃圾對象的內存佔用和GC的開銷。顯示調用System.GC()只能建議JVM需要在內存中對垃圾對象進行回收,但不是必須馬上回收,

一個是並不能解決內存資源耗空的局面,另外也會增加GC的消耗。

二、JVM內存區域組成

簡單的說java中的堆和棧

java把內存分兩種:一種是棧內存,另一種是堆內存

1。在函數中定義的基本類型變數和對象的引用變數都在函數的棧內存中分配;

2。堆內存用來存放由new創建的對象和數組

在函數(代碼塊)中定義一個變數時,java就在棧中為這個變數分配內存空間,當超過變數的作用域後,java會自動釋放掉為該變數所分配的內存空間;在堆中分配的內存由java虛擬機的自動垃圾回收器來管理

堆的優勢是可以動態分配內存大小,生存期也不必事先告訴編譯器,因為它是在運行時動態分配內存的。缺點就是要在運行時動態分配內存,存取速度較慢;

棧的優勢是存取速度比堆要快,缺點是存在棧中的數據大小與生存期必須是確定的無靈活性。

java堆分為三個區:New、Old和Permanent

GC有兩個線程:

新創建的對象被分配到New區,當該區被填滿時會被GC輔助線程移到Old區,當Old區也填滿了會觸發GC主線程遍歷堆內存里的所有對象。Old區的大小等於Xmx減去-Xmn

java棧存放

棧調整:參數有+UseDefaultStackSize -Xss256K,表示每個線程可申請256k的棧空間

每個線程都有他自己的Stack

三、JVM如何設置虛擬內存

提示:在JVM中如果98%的時間是用於GC且可用的Heap size 不足2%的時候將拋出此異常信息。

提示:Heap Size 最大不要超過可用物理內存的80%,一般的要將-Xms和-Xmx選項設置為相同,而-Xmn為1/4的-Xmx值。

提示:JVM初始分配的內存由-Xms指定,默認是物理內存的1/64;JVM最大分配的內存由-Xmx指定,默認是物理內存的1/4。

默認空餘堆內存小於40%時,JVM就會增大堆直到-Xmx的最大限制;空餘堆內存大於70%時,JVM會減少堆直到-Xms的最小限制。因此伺服器一般設置-Xms、-Xmx相等以避免在每次GC
後調整堆的大小。

提示:假設物理內存無限大的話,JVM內存的最大值跟操作系統有很大的關系。

簡單的說就32位處理器雖然可控內存空間有4GB,但是具體的操作系統會給一個限制,

這個限制一般是2GB-3GB(一般來說Windows系統下為1.5G-2G,Linux系統下為2G-3G),而64bit以上的處理器就不會有限制了

提示:注意:如果Xms超過了Xmx值,或者堆最大值和非堆最大值的總和超過了物理內存或者操作系統的最大限制都會引起伺服器啟動不起來。

提示:設置NewSize、MaxNewSize相等,"new"的大小最好不要大於"old"的一半,原因是old區如果不夠大會頻繁的觸發"主" GC
,大大降低了性能

JVM使用-XX:PermSize設置非堆內存初始值,默認是物理內存的1/64;

由XX:MaxPermSize設置最大非堆內存的大小,默認是物理內存的1/4。

解決方法:手動設置Heap size

修改TOMCAT_HOME/bin/catalina.bat

在「echo "Using CATALINA_BASE: $CATALINA_BASE"」上面加入以下行:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

四、性能檢查工具使用

定位內存泄漏:

JProfiler工具主要用於檢查和跟蹤系統(限於Java開發的)的性能。JProfiler可以通過時時的監控系統的內存使用情況,隨時監視垃圾回收,線程運行狀況等手段,從而很好的監視JVM運行情況及其性能。

1. 應用伺服器內存長期不合理佔用,內存經常處於高位佔用,很難回收到低位;

2. 應用伺服器極為不穩定,幾乎每兩天重新啟動一次,有時甚至每天重新啟動一次;

3. 應用伺服器經常做Full GC(Garbage Collection),而且時間很長,大約需要30-40秒,應用伺服器在做Full
GC的時候是不響應客戶的交易請求的,非常影響系統性能。

因為開發環境和產品環境會有不同,導致該問題發生有時會在產品環境中發生,通常可以使用工具跟蹤系統的內存使用情況,在有些個別情況下或許某個時刻確實是使用了大量內存導致out
of memory,這時應繼續跟蹤看接下來是否會有下降,

如果一直居高不下這肯定就因為程序的原因導致內存泄漏。

五、不健壯代碼的特徵及解決辦法

1、盡早釋放無用對象的引用。好的辦法是使用臨時變數的時候,讓引用變數在退出活動域後,自動設置為null,暗示垃圾收集器來收集該對象,防止發生內存泄露。

對於仍然有指針指向的實例,jvm就不會回收該資源,因為垃圾回收會將值為null的對象作為垃圾,提高GC回收機制效率;

2、我們的程序里不可避免大量使用字元串處理,避免使用String,應大量使用StringBuffer,每一個String對象都得獨立佔用內存一塊區域;

String str = "aaa";

String str2 = "bbb";

String str3 = str + str2;//假如執行此次之後str
,str2以後再不被調用,那它就會被放在內存中等待Java的gc去回收,程序內過多的出現這樣的情況就會報上面的那個錯誤,建議在使用字元串時能使用StringBuffer就不要用String,這樣可以省不少開銷;

3、盡量少用靜態變數,因為靜態變數是全局的,GC不會回收的;

4、避免集中創建對象尤其是大對象,JVM會突然需要大量內存,這時必然會觸發GC優化系統內存環境;顯示的聲明數組空間,而且申請數量還極大。

這是一個案例想定供大家警戒

使用jspsmartUpload作文件上傳,運行過程中經常出現java.outofMemoryError的錯誤,

檢查之後發現問題:組件里的代碼

m_totalBytes = m_request.getContentLength();

m_binArray = new byte[m_totalBytes];

問題原因是totalBytes這個變數得到的數極大,導致該數組分配了很多內存空間,而且該數組不能及時釋放。解決辦法只能換一種更合適的辦法,至少是不會引發outofMemoryError的方式解決。參考:http://bbs.xml.org.cn/blog/more.asp?name=hongrui&id=3747

5、盡量運用對象池技術以提高系統性能;生命周期長的對象擁有生命周期短的對象時容易引發內存泄漏,例如大集合對象擁有大數據量的業務對象的時候,可以考慮分塊進行處理,然後解決一塊釋放一塊的策略。

6、不要在經常調用的方法中創建對象,尤其是忌諱在循環中創建對象。可以適當的使用hashtable,vector
創建一組對象容器,然後從容器中去取那些對象,而不用每次new之後又丟棄

7、一般都是發生在開啟大型文件或跟資料庫一次拿了太多的數據,造成 Out Of Memory Error
的狀況,這時就大概要計算一下數據量的最大值是多少,並且設定所需最小及最大的內存空間值。

⑻ java內存溢出是什麼情況

首先先說一下JVM內存結構問題,JVM為兩塊:PermanentSapce和HeapSpace,其中
Heap = }。PermantSpace負責保存反射對象,一般不用配置。JVM的Heap區可以通過-X參數來設定。
當一個URL被訪問時,內存申請過程如下:
A. JVM會試圖為相關Java對象在Eden中初始化一塊內存區域
B. 當Eden空間足夠時,內存申請結束。否則到下一步
C. JVM試圖釋放在Eden中所有不活躍的對象(這屬於1或更高級的垃圾回收), 釋放後若Eden空間仍然不足以放入新對象,則試圖將部分Eden中活躍對象放入Survivor區
D. Survivor區被用來作為Eden及OLD的中間交換區域,當OLD區空間足夠時,Survivor區的對象會被移到Old區,否則會被保留在Survivor區
E. 當OLD區空間不夠時,JVM會在OLD區進行完全的垃圾收集(0級)
F. 完全垃圾收集後,若Survivor及OLD區仍然無法存放從Eden復制過來的部分對象,導致JVM無法在Eden區為新對象創建內存區域,則出現」out of memory錯誤」

JVM調優建議:

ms/mx:定義YOUNG+OLD段的總尺寸,ms為JVM啟動時YOUNG+OLD的內存大小;mx為最大可佔用的YOUNG+OLD內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
NewSize/MaxNewSize:定義YOUNG段的尺寸,NewSize為JVM啟動時YOUNG的內存大小;MaxNewSize為最大可佔用的YOUNG內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
PermSize/MaxPermSize:定義Perm段的尺寸,PermSize為JVM啟動時Perm的內存大小;MaxPermSize為最大可佔用的Perm內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
SurvivorRatio:設置Survivor空間和Eden空間的比例

內存溢出的可能性

1. OLD段溢出
這種內存溢出是最常見的情況之一,產生的原因可能是:
1) 設置的內存參數過小(ms/mx, NewSize/MaxNewSize)
2) 程序問題
單個程序持續進行消耗內存的處理,如循環幾千次的字元串處理,對字元串處理應建議使用StringBuffer。此時不會報內存溢出錯,卻會使系統持續垃圾收集,無法處理其它請求,相關問題程序可通過Thread Dump獲取(見系統問題診斷一章)單個程序所申請內存過大,有的程序會申請幾十乃至幾百兆內存,此時JVM也會因無法申請到資源而出現內存溢出,對此首先要找到相關功能,然後交予程序員修改,要找到相關程序,必須在Apache日誌中尋找。
當Java對象使用完畢後,其所引用的對象卻沒有銷毀,使得JVM認為他還是活躍的對象而不進行回收,這樣累計佔用了大量內存而無法釋放。由於目前市面上還沒有對系統影響小的內存分析工具,故此時只能和程序員一起定位。

2. Perm段溢出
通常由於Perm段裝載了大量的Servlet類而導致溢出,目前的解決辦法:
1) 將PermSize擴大,一般256M能夠滿足要求
2) 若別無選擇,則只能將servlet的路徑加到CLASSPATH中,但一般不建議這么處理

3. C Heap溢出
系統對C Heap沒有限制,故C Heap發生問題時,Java進程所佔內存會持續增長,直到佔用所有可用系統內存

參數說明:

JVM 堆內存(heap)設置選項
參數格式
說 明

設置新對象生產堆內存(Setting the Newgeneration heap size)
-XX:NewSize
通過這個選項可以設置Java新對象生產堆內存。在通常情況下這個選項的數值為1 024的整數倍並且大於1MB。這個值的取值規則為,一般情況下這個值-XX:NewSize是最大堆內存(maximum heap size)的四分之一。增加這個選項值的大小是為了增大較大數量的短生命周期對象

增加Java新對象生產堆內存相當於增加了處理器的數目。並且可以並行地分配內存,但是請注意內存的垃圾回收卻是不可以並行處理的

設置最大新對象生產堆內存(Setting the maximum New generation heap size)
-XX:MaxNewSize
通過這個選項可以設置最大Java新對象生產堆內存。通常情況下這個選項的數值為1 024的整數倍並且大於1MB

其功用與上面的設置新對象生產堆內存-XX:NewSize相同

設置新對象生產堆內存的比例(Setting New heap size ratios)
-XX:SurvivorRatio
新對象生產區域通常情況下被分為3個子區域:伊甸園,與兩個殘存對象空間,這兩個空間的大小是相同的。通過用-XX:SurvivorRatio=X選項配置伊甸園與殘存對象空間(Eden/survivor)的大小的比例。你可以試著將這個值設置為8,然後監控、觀察垃圾回收的工作情況

設置堆內存池的最大值(Setting maximum heap size)
-Xmx
通過這個選項可以要求系統為堆內存池分配內存空間的最大值。通常情況下這個選項的數值為1 024的整數倍並且大於1 MB

一般情況下這個值(-Xmx)與最小堆內存(minimum heap size –Xms)相同,以降低垃圾回收的頻度

取消垃圾回收
-Xnoclassgc
這個選項用來取消系統對特定類的垃圾回收。它可以防止當這個類的所有引用丟失之後,這個類仍被引用時不會再一次被重新裝載,因此這個選項將增大系統堆內存的空間

設置棧內存的大小
-Xss
這個選項用來控制本地線程棧的大小,當這個選項被設置的較大(>2MB)時將會在很大程度上降低系統的性能。因此在設置這個值時應該格外小心,調整後要注意觀察系統的性能,不斷調整以期達到最優

最後說一句,你的機器的連接數設置也至關重要,連接的關閉最好把時間設置的少些,那些連接非常耗費資源。也是引起內存泄露的主要原因。

⑼ JAVA 內存溢出的幾種類型

主要有三種類型
1.OutOfMemoryError: PermGen space
發生這種問題的原因java虛擬機裝載類的空間不夠,與Permanent Generation space有關。可以通過增加java虛擬機中的XX:PermSize XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。

2.OutOfMemoryError: Java heap space
發生這種問題的原因是java虛擬機創建的對象太多,在進行垃圾回收時,虛擬機分配的堆內存空間已經滿了,與Heap space有關。可以通過增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。 -Xms256m -Xmx1024m

3.OutOfMemoryError:unable to create new native thread
在Java線程數很多的情況下易發生

⑽ Java內存溢出的解決方案都有哪些

內存溢出可能是以下原因:

內存中載入的數據量過於龐大,如一次從資料庫取出過多數據;
調用介面超時且超時等待時間設置過長;
集合類中有對對象的引用,使用完後未清空,使得JVM不能回收;
代碼中存在死循環或循環產生過多重復的對象實體;
啟動參數內存值設定的過小;
那麼針對的結局方案:
優化資料庫查詢語句,如改成分頁查詢;
調用介面超時時間設置短一些,列印錯誤日誌,修正超時的介面;
集合類使用完後設置成null,例:在執行完list之後寫上list=null;
使用debug逐步查找死循環的代碼
將jvm內存的值增大:-Xms1024m -Xmx1024m -XX:MaxNewSize=1024m -XX:MaxPermSize=1024m (設置的值依據伺服器內存的大小來設定)
純手打,望採納。

熱點內容
php獲取調用的方法 發布:2025-01-20 04:25:45 瀏覽:458
SMPT郵箱伺服器地址 發布:2025-01-20 04:04:16 瀏覽:662
抖影工廠為什麼安卓手機用不了 發布:2025-01-20 04:00:05 瀏覽:386
我的世界網易版怎麼進朋友伺服器 發布:2025-01-20 03:50:10 瀏覽:684
phpsession跳轉頁面跳轉 發布:2025-01-20 03:47:20 瀏覽:540
深圳解壓工廠 發布:2025-01-20 03:41:44 瀏覽:690
linux字體查看 發布:2025-01-20 03:41:30 瀏覽:742
pythonextendor 發布:2025-01-20 03:40:11 瀏覽:199
為什麼安卓手機儲存越來越少 發布:2025-01-20 03:40:07 瀏覽:925
演算法和人性 發布:2025-01-20 03:28:31 瀏覽:473