gpt4 book ai didi

java - java网络程序中字符串与内存相关的问题

转载 作者:行者123 更新时间:2023-12-02 07:18:47 26 4
gpt4 key购买 nike

我正在开发一个小型 java 网络程序,用于使用套接字进行即时消息。在应用程序中,使用DataOutputStream 的 readUTF() 方法读取消息,该方法返回一个String 对象。因此,每次到达或发送新消息时,都会在内存中创建一个新的 String 对象,这又会消耗内存。经过长时间的通信,内存中出现了几个String对象。

有什么办法可以避免这种情况,或者我应该尝试其他接收消息的方式。我对 Java 网络编程及其概念非常陌生。谢谢。我的编码风格非常糟糕,但我仍然会尽力使问题清晰。

String recievedMessage = dataInputStream.readUTF();
String messageType = recievedMessage.substring(0, recievedMessage.indexOf("##"));
String message = recievedMessage.substring(recievedMessage.indexOf("##") + 2, recievedMessage.indexOf("$$"));

此后,消息对象将使用 StyledDocument 插入到 JTextPane 中。

最佳答案

这并非特定于网络编程:创建 transient 字符串几乎不需要任何成本,并且它们可以被有效地垃圾收集。如果您将整个对话记录保留在 RAM 中,您就会开始遇到问题。如果您确实需要保存文字记录,只需将所有消息转发到一个文件,而不保留 RAM。

关于java - java网络程序中字符串与内存相关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14538048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com