자바 static 메소드 내부 지역변수 메모리 변화에 대해 궁금합니다~

busungg의 이미지

자바에서

public class A{
 
  public static String B{
 
    StringBuilder c= new StringBuilder();
    c.append("메모리");
    return c.toString();
  }
 
}

1. 위의 코드처럼 static 메소드 안에 지역변수가 존재할때 B 메소드가 호출될시 지역변수 c의 메모리는 B메소드의 실행이 끝나고 어떻게 될까요?


2. B 메소드가 여러번 호출될시 new로 생성되는 StringBuilder 클래스 메모리들은 어떻게 될까요?

mirheekl의 이미지

1. toString에서 새로 스트링을 리턴하므로 c자체는 일정 시간이 흐른 후 GC에 의해 소멸되겠죠. 물론 코드를 바꿔서 레퍼런스 자체를 리턴한다면 유지되겠지요.

2. 루프를 돌리면서 프로세스 관점으로 살펴보면 아마 어느정도 카운터가 증가하다가 GC에 의해 확 줄어들고 하는게 반복될겁니다.

--

busungg의 이미지

메모리 변화가 너무 궁금했는데 알려주셔서 감사합니다~