java - 我正在用 java 编写一个 Android 应用程序,我认为存在内存泄漏,但不知道如何修复它

标签 java android memory-leaks

我正在为一个学校项目编写一个java应用程序,其中有几种纸牌游戏。我正在编写第一个游戏,并为我计划做的所有游戏实现了框架。我有一个名为 Deck 的类,它控制所有卡片组逻辑,并在 arrayList 中创建一个包含 52 个卡片对象的卡片组。每当我创建一副卡片组时,程序就会停止并且不响应。据我在网上查看,它说我创建了太多对象,程序试图清理它们或其他东西。我对java相当陌生,对如何解决这个问题感到非常困惑。以下是 createDeck() 方法和生成的 LogCat 输出。非常感谢任何帮助或智慧。提前致谢!

public void createDeck() 
{
    for (int i = 1; i <= 13; i++)
    {

        for (int j = 0; j < 4; i++)
        {

            if (j == 0) //If diamond suite
            {
                Card newCard = new Card(i, j);
                cardDeck.add(newCard);
            }

            if (j == 1) //If hearts suite
            {
                Card newCard = new Card(i, j);
                cardDeck.add(newCard);
            }

            if (j == 2) //If clover suite
            {
                Card newCard = new Card(i, j);
                cardDeck.add(newCard);
            }

            if (j == 3) //If spade suite
            {
                Card newCard = new Card(i, j);
                cardDeck.add(newCard);
            }

        }

    }
}

LogCat 输出

WAIT_FOR_CONCURRENT_GC blocked 61ms
GC_CONCURRENT freed 153K, 7% free 3755K/4024K, paused 69ms+25ms total 213ms

最佳答案

一个小错误:

在第二个 for 循环中更改:

for (int j = 0; j < 4; i++)

至:

for (int j = 0; j < 4; j++)

顺便说一句,通过使用调试器或打印日志 - 您很快就会找到它。

关于java - 我正在用 java 编写一个 Android 应用程序,我认为存在内存泄漏,但不知道如何修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13438554/

相关文章:

android - 是否可以使用 BindingAdapter 直接将事件绑定(bind)到 Observable 字段?

c - 我不明白为什么我肯定会失去内存 block

java - JVMTI:FollowReferences:如何跳过软/弱/幻像引用?

memory-leaks - Kotlin 伴随对象内存泄漏?

java - 无法使用 mojo 的构建帮助程序查看生成的测试源文件夹

java - 将 MySQL 中的 CHAR(0) 映射到 Hibernate 中的 boolean 值

java - 应用程序关闭后也经常运行服务

java - 带有\0 的字符串在 Java 中表现得很奇怪

java - JADE 操作() 不起作用

android - 如何在android中使用Intent将对象的ArrayList从一个 Activity 传递到另一个 Activity ?