2012-11-05 37 views
-5

我正在編寫遊戲,當我嘗試向服務器發送聊天消息時,出現奇怪的內存泄漏。 發送字符串: 聊天¥測試 假作:爲什麼我無休止地追加Java中的字符串

!chat¥test 
!chat¥!chat¥test 
!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥test 
!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥!chat¥test 
Ect, ect. 


Sending message: 

Utils.sendChat(message.getText()); 

public static void sendChat(String s) { 
    System.out.println(s); 
    sendChat("!chat"+Wrapper.commandSplit+s); 
} 

public static void sendTextLine(String s){ 
    s = s.replace(" ", "[SPACE]"); 
    System.out.println(s); 
    Wrapper.pw.write(s); 
    Wrapper.pw.flush(); 
} 

我不知道爲什麼發生這種情況,有人可以幫我嗎? 我使用'¥'來分割字符串中的變量,之前沒有給我任何問題,所以我懷疑它與它有任何關係。

謝謝。

+0

getText如何工作?這可能是因爲您添加了相同的文本而不是內存泄漏,但是您要求服務器發送的文本存在範圍問題。 –

+0

兩件事...大多數人使用逗號分隔,我敢肯定,你只是遞歸調用sendChat。 – Max

+1

無盡的循環不屬於內存泄漏問題的類。 –

回答

10
public static void sendChat(String s) { 
    System.out.println(s); 
    sendChat("!chat"+Wrapper.commandSplit+s); 
} 

這是一個無限循環的建築越來越長的字符串每次你再打電話sendChat時間。

您可能打算在第二行打電話給sendTextLine

+0

我現在感到很蠢,謝謝你幫助我。 – user1681891

+4

@ user1681891 SO有自己的機制說「謝謝」 - >接受答案。見http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – MoRe

+2

我希望user1681891回來,並將其標記爲正確的...直到然後有一個+1 – WilliamShatner

相關問題