본문 바로가기

강한참조 / 약한참조(WeakReference) 강한참조 일반적으로 new 할당 후 새로운 객체를 만들어 해당객체를 참조하는방식이다.할당된 객체를 해지하기 위해 null값을 넣어도 새로운 객체가 참조를 하고 있어GC가 수집해 가지 않는다. 약한참조 WeakReference를 이용하여 new할당된 객체를 참조하는 방식이다.할당된 객체를 해지하기 위해 null값을 넣으면 WeakReference객체가 참조를 하고 있어도약한 참조를 하고 있기 때문에 GC가 수집해가서 할당된 객체는 사라지고 weakreference 객체는 null값을 가지게 된다. //new 할당할 객체 2개 stock phone; stock notebook; //각각 강한참조객체와 약한참조 객체 stock stock1; WeakReference stock2; public void Test..
Draw call / Batch Draw call CPU가 GPU에게 Scene을 한번 그려라 라는 명령을 내리는 것이라 보면 된다.Draw call은 CPU메모리를 많이 먹으므로 이 횟수를 줄이는 것이 최적화에 중요하다. Batch Unity에서는 기존에 Draw call이라는 것을 사용하다 5버전부터 Batch라는 단어로 대신 사용한다.Batching 과 Draw call은 개념상 다르나 결국 1회의 Batching이 끝나면 1회의 Draw call이 발생하기때문에Draw call 횟수 = Batching 횟수 이기 떄문에 단어의 차이일 뿐 의미는 같다고 볼 수 있다. 예를들어 Command Buffer상의 SetState( ) 호출작업, 그려질 Triangle의 정보들을 셋팅하는 작업, Rendering State를 셋팅하는 작업..
Frame 고정값 셋팅 Application.targetFrameRate 값을 설정해주면 해당 Frame값으로 고정이 된다. 대신 frame 고정을 사용할땐 QualitySettings.vSyncCount = 0; 으로 vSync를 사용하지 않아야 한다. //60 frame으로 고정 Application.targetFrameRate = 60; //vSync Off QualitySettings.vSyncCount = 0;
HTTP / FTP / Socket HTTP 통신(Hyper Test Transport Protocal, 인터넷에서 웹서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신규약) Client의 요청이 있을 때 server가 해당 page에 대한 data를 전송 하고 곧바로 연결을 끊는 방식이다.해당 방식은 Server와의 연결을 유지하지 않고 request가 들어오면 연결 후 data만 전송하고 끊는 방식으로서Server의 과부하를 줄여줄 수 있다.작은규모의 여러개 file을 보낼때 ftp보다 유리하다. Socket 통신 Socket 통신의 경우 Client와 Server가 연결이 되면 어느 한쪽에서 강제로 접속을 해제하기 전까지 계속 연결을 유지하는 방식이다.따라서 server의 성능에 따라 server와 연결할 수 ..
Scriptable Object Scriptable Object Unity에서 Script를 Component형식으로 사용하지 않고 Script자체를 Object로 사용하는 방식이다.기존의 XML이나 JSON을 대신해서 데이터를 일정 고정값으로 보관하고 있다가 해당 data가 필요할 때Scriptable Object를 new 하지 않고 data를 사용할 수 있다. 일종의 data만 가지고 있는 object를 사용하기 위해 있는 것이다.해당객체는 생성시 new가 아닌 CreateInstance를 사용해야 한다. public class BuildSetting : ScriptableOjbect { [SerializeField, Tooltip("빌드 결과물(apk 파일의 이름")] private string m_buildName = "Game..
.NET Reflection .NET Reflection .NET Reflection은 .NET 객체의 class type, method, property등의 meta information을 runtime중에 알아내는 기능을 제공한다.또한, 이러한 meta information을 얻은 후 직접 method를 호출하거나 property를 변경하는 등의 작업도 가능하다.물론 객체에서 method를 직접 호출하는 경우가 더 빠르겠지만 어떤 경우는 runtime중에 이런 meta information을 동적으로 알아낼필요가 있다.예를들어 test assembly에 있는 test class들의 public method를 선별해서 이를 동적으로 호출하는 경우라든가특정 class안에 지정된 이름의 member가 있는지 판단하는 경우 등이 있다...
Mobile Build 과정(Dalvik / ART / dex file / OAT file / NDK / JRE / JDK / JNI / Clang / LLVM / Library) Dalvik 롤리팝 이전부터 사용되었던 VM(virtual machine) ART(Android Run Time) 롤리팝버전부터 사용되는 VM(virtual machine) dex file virtual machine에서 bite code로 사용하는 file OAT(Optimized Ahead of Time) File Application이 처음 설치될때 생성되는 file, dex file을 dex2opt program을 통해 odex(Optimized dex)라는 최적화된 dex file로 바꿔서 사용한다.이와 비슷하게 dex2oat program은 dex file을 바아 oat file을 만든다.dex2oat program은 android OS 내부에 설치되어 있으며 처음 apk file을 설치될때 ..
KD Tree / KDB Tree K-D Tree(K = 숫자, D = Demension, 차원) k-d tree는 다차원의 점 data를 index할 수 있는 가장 간단하면서도 기본적인 data 구조이다.k-d tree는 일반적으로 disk의 저장을 고려하지 않고 주 기억장치 상에서 동작하는 index 구조이다.따라서 대용량의 data에 대해서는 적당하지 않고 소규모의 다차원 점 data를 index할 때 적당하다. 즉 Binary Search Tree를 다차원 공간으로 확장한것, 기본 구조와 알고리즘은 BST와 유사하지만 Tree의 level차원을 번갈아 가며 비교한다는게 차이점이다. 특징 주 기억장치에서 동작소규모의 다차원 점 data를 인덱싱할때 적합(PAM)balanace tree가 아님 삽입 삽입하려는 data key valu..