gpt4 book ai didi

java - 从服务器读取时内存转储导致 Android 应用加载速度过慢

转载 作者:行者123 更新时间:2023-11-30 03:11:57 25 4
gpt4 key购买 nike

我正在为我的 WordPress 博客制作一个 Android 应用程序,我在我的 Android 应用程序中设置了一个静态类 Server.java 来与我在托管服务器上创建的 PHP 文件进行通信。

我使用 URLConnection、DataOutputStream 和 DataInputStream 进行通信。我的一个函数从我的 WordPress 获取最新的 10 篇文章,并通过以下方式检索...

在我的任何 java 文件中,调用 Server.getPosts(); 下面是我的 Server.java 文件(至少您需要看到的部分)

public class Server
{
public static final String SERVER_URL = "http://www.startingtofeelit.com/android-server.php";


public static String getPosts()
{
return executeHttpRequest("command=getPosts");
}


@SuppressWarnings("deprecation")
private static String executeHttpRequest(String data)
{
String result = new String();
try
{
URL url = new URL(SERVER_URL);
URLConnection connection = url.openConnection();

connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

DataOutputStream dataOut = new DataOutputStream(connection.getOutputStream());
dataOut.writeBytes(data);
dataOut.flush();
dataOut.close();

// get the response from the server and store it in result
DataInputStream dataIn = new DataInputStream(connection.getInputStream());
String inputLine;

while ((inputLine = dataIn.readLine()) != null)
{
result += inputLine;
}
dataIn.close();
}

catch (IOException e)
{
result = null;
}

System.out.println("Returning from Server.java");
return result;
}
}

我从在线指南中获得了大部分代码。它返回一个字符串,其中包含我的帖子的 xml 表示形式。如果您愿意,可以查看 xml/返回字符串 here ,但这对你来说真的没有必要帮助我。

我的主要问题是:我得到了大量的内存转储。我的代码设置方式有问题,我得到了大量带有标签“dalvikvm”的内存转储和消息 GC_CONCURRENT freed 312K, 5% free 9989K/10439K, paused 10ms+15ms Eclipse LogCat 和其他类似的消息。它极大地减慢了我的应用程序的负载。它似乎起源于我的 while 循环,但我不知道该怎么做。有帮助吗?

最佳答案

在 while 循环中使用 StringBuilder。每次通过循环您都在创建一个新的 String 对象(并使旧对象符合 GC 的条件),这可能会影响性能并导致 GC 比平时更疯狂。请记住,字符串在 Java 中是不可变的。

StringBuilder response = new StringBuilder();

String line;

while ((line = dataIn.readLine()) != null)
{
response.append(line);
}

return response.toString();

关于java - 从服务器读取时内存转储导致 Android 应用加载速度过慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20795352/

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