DevJong12

22.05.24 F-Lab멘토링 본문

Java,Spring/F-Lab

22.05.24 F-Lab멘토링

Jong12 2022. 5. 30. 14:59
728x90

[System.exit, System.GC를 사용하면 안되는 이유]

  • exit
    • System.exit
      • Runtime.exit
        • shutdown.exit
          • shutdown.halt0 실행

exit의 경우 위의 stack으로 실행이 된다.

halt의 경우에는  JVM프로세스를 강제로 종료한는 메소드로, exit를 실행시 JVM을 종료하게 되는 것..

운영중에 내가 만든기능으로 서비스가 종료하게 되는 결과가 발생하는 것.

 

  • GC
    • GC는 GarbageCollector를 인위적으로 호출한다.
    • 해당 메소드는 Full GC를 실행하는 것
      • 왜 New와 Old영역으로 구분을 하고 Major GC, Full GC로 분리를 했을지 생각을 해보면 좋을 것 같다.
    • Full GC를 인위적으로 실행하는 것인데 그러면 수집이 이뤄지는게 비효율적이게 되며 심지어 무거움.
      • 효율이 떨어지는 것.., 또한 실행이 오래걸림.

 

[System.out.println등등의 사용을 자제해야 하는 이유]

  1. 성능의 저하
    1. println의 경우에는 동기(Synchronous)처리가 되어있다.
    2. 콘솔에 출력을 하며 OS콘솔을 활성화하게 된다 -> 이게 CPU의 점유가 많음.
    3. 위의 과정을 겪으며 성능이 느려지게됨
  2. 여러곳에서 동시에 사용하게 되면 한명이 독점하면서 다른처리가 불가능한 Blocking현상이 발생 할 수도 있다

이미 위의 두개만으로 사용을 하면 안되는 이유는 충분한 것 같다..

 

[정적타입(언어)과 동적타입(언어)에 대해서]

정적 : 컴파일시 변수의 타입이 결정되는 언어를 의미하며, 프로그래머가 직접 명시해줘야 함.

- Java, C, C++ 등등이 존재

 

장점은 타입에러로 인한 문제점을 초기에 발견할 수 있으며, 안정성이 높고, 미리 타입을 결정하기에 실행속도가 빠름.

단점은 코드작성시 변수형을 결정해 줘야하는 번거로움

 

 

동적 : 컴파일시 자료형을 정하는게 아니라 런타임시 결정이 됨

- Python, JavaScript, PHP등이 존재

 

장점은 높은 유연성과, 타입의 명시가 없기에 빠른 코드 작성이 가능

단점은 실행도중에 변수에 예상치 못한 타입으로 인한 타입에러가 발생 가능

 

JS의경우에는 타입에러로 인한 불편함을 해소하기 위해 TypeScript도 나옴..

 

728x90

'Java,Spring > F-Lab' 카테고리의 다른 글

22. 06. 20 F-Lab 멘토링  (0) 2022.06.27
22. 05. 30 F-Lab 멘토링  (0) 2022.06.12
22.05.16 F-Lab멘토링  (0) 2022.05.18
22.05.09 F-Lab멘토링  (0) 2022.05.11
22.05.04 F-Lab멘토링  (0) 2022.05.05
Comments