본문 바로가기

JAVA

Anonymous class vs lambda

1. Anonymous class 특징

  • inner class가 outer class의 참조값을 가지고 있는 것처럼, 익명 클래스의 인스턴스는 외부 클래스 인스턴스의 참조값을 가지고 있다.
  • GC의 대상이 되고 익명 클래스 참조가 해제될 때, 외부 클래스 인스턴스의 참조도 같이 해제가 된다.

 

2. Anonymous class 단점

  • 위의 특징 때문에 불필요한 메모리를 참조하여 메모리릭이 발생할 확률이 올라간다.

 

3. lambda 특징

  • static field를 생성하여 작업을 진행하여 외부 클래스의 인스턴스의 참조값을 가지지 않는다.
  • 그래서 메모리가 할당이 되고 작업이 끝나면 GC 대상이 되어 메모리 참조가 바로 해제가 된다.

 

4. lambda 장점

  • 위의 특징 덕분에 불필요한 메모리를 참조하지 않아 메모리릭이 발생할 확률이 내려간다.

 

5. 결론

  • 아마도 이러한 특징들 때문에 자바 8부터 함수형 프로그래밍을 도입했다고 생각한다.
  • 코틀린을 많이 사용하는 이유가 함수형 프로그래밍을 적극 받아들이고 람다식으로 코드를 편하게 작성할 수 있다는 점이 매우 크다고 생각한다.

 

 

 

 

 

 

 

 

references

드미트리 제메로프 and 스베트라나 이사코바. Kotlin In Action, 에이콘, 2017

https://kotlinlang.org/docs/lambdas.html

https://meetup.toast.com/posts/186

https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

'JAVA' 카테고리의 다른 글

final  (0) 2022.04.27
static  (0) 2022.04.23
nested class(중첩 클래스)  (0) 2022.04.23
절차지향과 객체지향의 차이점  (0) 2022.04.23
nested class  (0) 2022.04.20