안드로이드 앱에서 코틀린 오브젝트가 앱이 종료된 뒤에도 메모리에 남아있을 수 있어?
상사가 오브젝트에 a라는 변수의 값을 변경하고, 앱을 종료했을 때 오브젝트가 메모리에 남아있는 동안 앱을 재실행하면 a를 변경한 값이 그대로 유지된다는데
이거 맞아? 앱이 종료됐는데 그 앱에서 생성한 오브젝트가 독립적으로 메모리에 남아있을 수가 있나?
14개의 댓글
무분별한 사용은 차단될 수 있습니다.
안드로이드 앱에서 코틀린 오브젝트가 앱이 종료된 뒤에도 메모리에 남아있을 수 있어?
상사가 오브젝트에 a라는 변수의 값을 변경하고, 앱을 종료했을 때 오브젝트가 메모리에 남아있는 동안 앱을 재실행하면 a를 변경한 값이 그대로 유지된다는데
이거 맞아? 앱이 종료됐는데 그 앱에서 생성한 오브젝트가 독립적으로 메모리에 남아있을 수가 있나?
프로그래머스
먼개솔이냐 존나다말안되는데 만약 남아있다쳐도 앱재실행했을때 그 오브젝트 메모리주소는 어케찾을껀데 ㅋㅋㅋㅋㅋㅋㅋ
백그라운드 서비스가 살아있었겠지
장윈영
https://developer.android.com/reference/android/app/Activity#onDestroy()
앱 생명주기에 인스턴스를 없앤다고 되어있어서 그럴 일은 없을걸?
반박시내말이맞음
그게 되면 sqlite, room 같은건 왜씀 다 메모리에 올려도 영속화 되는건데
곧나감
저도 이해가 안되는데 짬 차이가 존나게나서 그냥 와 정말요? 하면서 필요 없는 오브젝트 초기화 메서드를 만들었읍니다..
반박시내말이맞음
나도 안드한지 오래돼서 가물가물 하긴하지만, 너가 짬찌면 상사 말을 잘 이해 못했을 가능성도 있을 것 같네.
앱이 완전히 종료가 아니라, activity 나 fragment 이 사용자에게 안보이는 상황 (onStop?) 에서
다시 사용자에게 보여지게 됐을때 메모리에 값이 남아있을 수도 있긴 할 듯
반대로 그런경우 저장하는 방법(onSaveInstanceState) 같은거도 있으니까
앱마다 상황마다 다르긴 함
퍄퍄존슨
뭐 서비스가 같이 실행되고 있는 형태면 그럴 수도 있지 않을까 싶은데...
힝거루
종료 안하고 백그라운드에만 있어도 날라가는데 먼..
숨은음은
메모리에 남아 있을 수는 있음
그 데이터가 저장된 메모리 주소를 아냐 모르냐의 차이일 뿐
메모리 삭제는 대부분의 운영체제에서 “사용 안 하는 중인 공간으로 만듦”처리지, 안에 내용물을 00000000 으로 만듦 이게 아니라서
장윈영
변수 초기화 과정에서 덮어써서 불가능임. 직접 해당주소로 지정한거면 몰라도
숨은음은
불가능까지는 아님 ㅇㅇ
그 해당 저장 메모리 주소를 명확히 외부 데이터로 저장해놓고 직접 접근 형태로 가면 가능은 함
물론 그렇게 설계하면 미친새끼지
그런 식으로 설계하는 건 그 프로그램밖에 안 돌리는 임베디드급 이하의 하드웨어 제어일 때만 해야 함
안드나 윈도 처럼 운영체제가 따로 있는 형태에서 그런식으로 설계하면 걔가 또라이
장윈영
본문에서 가능하냐고 물은 이유는 당연히 내부오브젝트니까 물어봤겠지. 애초에 안드에서 포인터도 없거니와 일반변수라 했으니 직접접근도 아닐테고
숨은음은
할 수 있냐 없냐에서 할 수는 있다라고 말해야 맞는 거니까 팩트에 입각해서 말한 거 뿐임
다만 그렇게 하는 게 맞냐로 나아가면 맞긴 개뿔이 시팔 인 거고
장윈영
하긴 상황마다 다르니..
숨은음은
세상만사 할 수 있는 것들은 많지만
그렇게 하는 게 맞냐는 건 또 다른 문제잖아 ㅋㅋㅋㅋ
사람을 죽일 수는 있지만 죽이는 게 맞냐로 가면 이건 다른 문제니까