맥북프로 쓰면서 인텔리제이 버벅일 때(MacBook Pro M1 Ventura, IntelliJ)

codingrecipe·2023년 1월 6일
1

최근 맥북을 리셋하면서 개발툴을 모두 새로 설치하였는데 IntelliJ를 쓰면서 반박자 또는 한박자씩 느린부분이 상당히 거슬렸었다.
그리고 메모리 사용량은 프로젝트 2개를 열었는데 7기가에 가까운 사용량을 보이면서 맥북의 절반 가까운 메모리를 쓰는걸 보며.. 너무나 신경이 쓰였다..
열심히 구글링을 해보니 메모리 사용 부분은 Help-Change Memory Settings에서 8기가로 잡았더니 조금 나아지는 듯 했으나 어쨋든 너무 과하게 사용하는 것 같아 IntelliJ 업데이트를 기다려봐야 할 듯 하다. (아래 그림은 윈도우 컴에서 캡쳐)

하지만 메모리 사용량을 늘려도 코드 자동완성이나 스크롤을 할 때 버벅이는 현상은 여전하였다.

대체로 원인은 IntelliJ가 2022.3 으로 업데이트 되면서 발생하는 문제인 듯 한데 다운그레이드를 해볼까 하다 조금 더 구글링을 했더니 JetBrains 공식 홈페이지에서 이슈가 있는 것을 발견하였다.
원인은 IntelliJ를 보조 모니터에서 사용할 때 발생하는 이슈였다.(이 글을 보고 그냥 맥북에서 해봤더니 괜찮아짐..😲
JetBrain 관련 내용 주소: https://youtrack.jetbrains.com/issue/JBR-4983/MacOS-Ventura-External-monitor-lagging

내용상 Metal Rendering 때문에 발생하는 문제이고 이 부분을 disable 시키면 괜찮아 진다고 해서 따라해봤더니 정말 괜찮아졌다....
(Metal Rendering은 애플에서 개발한 고성능 그래픽 API라고 한다..https://developer.apple.com/forums/tags/metal)

결론으로 해결 방법은 VM Options를 열어서(shift 두번 누르고 vm 검색)
아래 내용을 입력하고 IntelliJ를 재시작하면 괜찮아진다.

-Dsun.java2d.metal=false

Ventura로 업데이트하면서 맥북이 잠자는동안에 배터리 소모량도 많아지는 것 같고 이래저래 문제점들이 있는듯한데 빨리 업데이트를 해서 해결이 되었으면 좋겠다..ㅠ

4개의 댓글

comment-user-thumbnail
2023년 5월 26일

와 진짜 ... 보조모니터 때문이었다니.. ㅜ 감사합니다 큰 도움 되었어요

1개의 답글
comment-user-thumbnail
2024년 2월 23일

안녕하세요! 유튜브에 코드를 넣으니 댓글이 자동으로 삭제되어 여기 남깁니다!

말씀하신 BoardEntity는 강의에서 적어주신대로 작성했습니다!
package com.firstproject.board.entity;

import com.firstproject.board.dto.BoardDTO;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

// DB와 직접적인 연관
@Entity
@Getter
@Setter
@Table(name = "board_table")
public class BoardEntity extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(length = 20, nullable = false)
private String boardWriter;

@Column // 크기255, null 기능
private String boardPass;

@Column
private String boardTitle;

@Column(length = 500)
private String boardContents;

@Column
private int boardHits;

// DTO에 담긴 값들을 Entity 객체로 옮겨 담는 과정
public static BoardEntity toSaveEntity(BoardDTO boardDTO) {
    BoardEntity boardEntity = new BoardEntity();
    boardEntity.setBoardWriter(boardDTO.getBoardWriter());
    boardEntity.setBoardPass(boardDTO.getBoardPass());
    boardEntity.setBoardTitle(boardDTO.getBoardTitle());
    boardEntity.setBoardContents(boardDTO.getBoardContents());
    boardEntity.setBoardHits(0);    // 조회수 값은 기본적으로 0
    return boardEntity;
}

}

1개의 답글