这整个内存泄漏的事情对我来说似乎很复杂。这里有很多很棒的信息,但我不太明白。即使在阅读了用 Java 创建内存泄漏之后,我仍然迷路了!有人可以向我指出这段代码中的内存泄漏在哪里吗?(重复运行此方法时会发生这种情况。)非常感谢!
08-11 23:02:07.487: I/ViewRootImpl(969): Reporting drop result: true
08-11 23:02:07.987: D/dalvikvm(969): GC_FOR_ALLOC freed 1769K, 18% free 10101K/12180K, paused 13ms, total 13ms
08-11 23:02:08.057: D/dalvikvm(969): GC_CONCURRENT freed 4K, 11% free 10915K/12180K, paused 3ms+5ms, total 30ms
08-11 23:02:08.057: D/dalvikvm(969): WAIT_FOR_CONCURRENT_GC blocked 1ms
08-11 23:02:14.757: I/dalvikvm(969): threadid=3: reacting to signal 3
08-11 23:02:14.767: I/dalvikvm(969): Wrote stack traces to '/data/anr/traces.txt'
public void deal(View v) {
// call and play
if (dealt) {
if (anteBet == playBet) {
// hand plays
dealt = false;
deal.setImageResource(R.drawable.deal);
fold.setImageResource(R.drawable.clear);
dealersCards.clear();
dealersCards.add(d1);
dealersCards.add(d2);
dealersCards.add(d3);
displayCards(dealersCards);
if (getHand(pc1, pc2, pc3) > getHand(dc1, dc2, dc3)
&& getHand(dc1, dc2, dc3) >= 1120000) {
award = true;
ante(anteBet);
award = true;
play(playBet);
} else if (getHand(dc1, dc2, dc3) < 1120000) {
award = true;
ante(anteBet);
}
else {
if (!(getHand(pc1, pc2, pc3) == getHand(dc1, dc2, dc3))) {
award = true;
ante(-anteBet);
award = true;
play(-playBet);
}
}
antePlusPayout();
pairPlusPayout();
} else {
play(anteBet - playBet);
}
// deal cards
} else if (anteBet > 0) {
deal.setImageResource(R.drawable.call);
fold.setImageResource(R.drawable.fold);
displayCards(display);
d1.setImageResource(R.drawable.facedown);
d2.setImageResource(R.drawable.facedown);
d3.setImageResource(R.drawable.facedown);
dealt = true;
deal.setImageResource(R.drawable.call);
}
}
public void displayCards(List<ImageView> disp) {
int cardNumber = 0;
for (ImageView c : disp) {
cardNumber++;
Card tempCard;
do {
tempCard = deck.get(rand(52));
} while (cardsInPlay.contains(tempCard));
cardsInPlay.add(tempCard);
rank = tempCard.getRank();
suit = tempCard.getSuit();
if (cardNumber == 1) {
dc1 = tempCard;
} else if (cardNumber == 2) {
dc2 = tempCard;
} else if (cardNumber == 3) {
dc3 = tempCard;
} else if (cardNumber == 4) {
pc1 = tempCard;
} else if (cardNumber == 5) {
pc2 = tempCard;
} else {
pc3 = tempCard;
}
if (rank == 2 && suit == 'c') {
c.setImageResource(R.drawable.clubs2);
} else if (rank == 3 && suit == 'c') {
c.setImageResource(R.drawable.clubs3);
} else if (rank == 4 && suit == 'c') {
c.setImageResource(R.drawable.clubs4);
} else if (rank == 5 && suit == 'c') {
c.setImageResource(R.drawable.clubs5);
} else if (rank == 6 && suit == 'c') {
c.setImageResource(R.drawable.clubs6);
} else if (rank == 7 && suit == 'c') {
c.setImageResource(R.drawable.clubs7);
} else if (rank == 8 && suit == 'c') {
c.setImageResource(R.drawable.clubs8);
} else if (rank == 9 && suit == 'c') {
c.setImageResource(R.drawable.clubs9);
} else if (rank == 10 && suit == 'c') {
c.setImageResource(R.drawable.clubs10);
} else if (rank == 11 && suit == 'c') {
c.setImageResource(R.drawable.clubsj);
} else if (rank == 12 && suit == 'c') {
c.setImageResource(R.drawable.clubsq);
} else if (rank == 13 && suit == 'c') {
c.setImageResource(R.drawable.clubsk);
} else if (rank == 14 && suit == 'c') {
c.setImageResource(R.drawable.clubsa);
}
else if (rank == 2 && suit == 'd') {
c.setImageResource(R.drawable.diamonds2);
} else if (rank == 3 && suit == 'd') {
c.setImageResource(R.drawable.diamonds3);
} else if (rank == 4 && suit == 'd') {
c.setImageResource(R.drawable.diamonds4);
} else if (rank == 5 && suit == 'd') {
c.setImageResource(R.drawable.diamonds5);
} else if (rank == 6 && suit == 'd') {
c.setImageResource(R.drawable.diamonds6);
} else if (rank == 7 && suit == 'd') {
c.setImageResource(R.drawable.diamonds7);
} else if (rank == 8 && suit == 'd') {
c.setImageResource(R.drawable.diamonds8);
} else if (rank == 9 && suit == 'd') {
c.setImageResource(R.drawable.diamonds9);
} else if (rank == 10 && suit == 'd') {
c.setImageResource(R.drawable.diamonds10);
} else if (rank == 11 && suit == 'd') {
c.setImageResource(R.drawable.diamondsj);
} else if (rank == 12 && suit == 'd') {
c.setImageResource(R.drawable.diamondsq);
} else if (rank == 13 && suit == 'd') {
c.setImageResource(R.drawable.diamondsk);
} else if (rank == 14 && suit == 'd') {
c.setImageResource(R.drawable.diamondsa);
}
else if (rank == 2 && suit == 'h') {
c.setImageResource(R.drawable.hearts2);
} else if (rank == 3 && suit == 'h') {
c.setImageResource(R.drawable.hearts3);
} else if (rank == 4 && suit == 'h') {
c.setImageResource(R.drawable.hearts4);
} else if (rank == 5 && suit == 'h') {
c.setImageResource(R.drawable.hearts5);
} else if (rank == 6 && suit == 'h') {
c.setImageResource(R.drawable.hearts6);
} else if (rank == 7 && suit == 'h') {
c.setImageResource(R.drawable.hearts7);
} else if (rank == 8 && suit == 'h') {
c.setImageResource(R.drawable.hearts8);
} else if (rank == 9 && suit == 'h') {
c.setImageResource(R.drawable.hearts9);
} else if (rank == 10 && suit == 'h') {
c.setImageResource(R.drawable.hearts10);
} else if (rank == 11 && suit == 'h') {
c.setImageResource(R.drawable.heartsj);
} else if (rank == 12 && suit == 'h') {
c.setImageResource(R.drawable.heartsq);
} else if (rank == 13 && suit == 'h') {
c.setImageResource(R.drawable.heartsk);
} else if (rank == 14 && suit == 'h') {
c.setImageResource(R.drawable.heartsa);
}
else if (rank == 2 && suit == 's') {
c.setImageResource(R.drawable.spades2);
} else if (rank == 3 && suit == 's') {
c.setImageResource(R.drawable.spades3);
} else if (rank == 4 && suit == 's') {
c.setImageResource(R.drawable.spades4);
} else if (rank == 5 && suit == 's') {
c.setImageResource(R.drawable.spades5);
} else if (rank == 6 && suit == 's') {
c.setImageResource(R.drawable.spades6);
} else if (rank == 7 && suit == 's') {
c.setImageResource(R.drawable.spades7);
} else if (rank == 8 && suit == 's') {
c.setImageResource(R.drawable.spades8);
} else if (rank == 9 && suit == 's') {
c.setImageResource(R.drawable.spades9);
} else if (rank == 10 && suit == 's') {
c.setImageResource(R.drawable.spades10);
} else if (rank == 11 && suit == 's') {
c.setImageResource(R.drawable.spadesj);
} else if (rank == 12 && suit == 's') {
c.setImageResource(R.drawable.spadesq);
} else if (rank == 13 && suit == 's') {
c.setImageResource(R.drawable.spadesk);
} else if (rank == 14 && suit == 's') {
c.setImageResource(R.drawable.spadesa);
}
}
}