public class Test {
public static void main(String args[]) {
int sum = 0;
for (int i = 0; i < 10_000_000; i++) {
sum += i;
Test test = new Test();
}
System.out.println("sum =" + sum);
}
}
질문: 정상적으로 동작이 될까요?..
대답: 아니요 (잘된다...)...
3가지의 속임수가 있다..
1. int형은 21억까지 밖에 못받음..(...기본) (눈치못챔)
2. 10_000_000 언더바 표기법은 자바7버전 이후부터 사용 가능
3. for문안에 test 객체 생성?.. 이건 왜 실행이 될까 모르겠다..
답 : 내 생각에는 for문이 돌면서 이름이 겹치기 때문에 에러날줄 ...?
-> for문이 끝나는시점 gc에 의해 삭제 되기때문에?..
-> 찾아보니까 메모리 누수때문에 지양하는 방식이다.
-> gc동작은 메모리가 부족하면 그때 동작한다고 한다.
그럼 무한으로 객체를 생성 하는건가 ?? 뭐지 ??
라고 검색을 해보니 여러가지 의견들이 있군..
더 공부해야겠 .... 다 ,,,,,
https://okky.kr/article/322734
https://stackoverflow.com/questions/8803674/declaring-variables-inside-or-outside-of-a-loop
'Back-End > Java' 카테고리의 다른 글
[java] Stream 총정리 (0) | 2022.08.09 |
---|---|
[java] for-each문 간단 예제 (0) | 2022.04.17 |
[java] 명명 규칙 (0) | 2022.03.11 |
[Java] ArrayList 정리 (0) | 2022.02.21 |
[java] Wraaper 클래스, 박싱(Boxing), 언박싱(Unboxing) (0) | 2022.02.16 |