<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=GnuSmalltalkUsersGuide%3ABaseChapter_122</id>
	<title>GnuSmalltalkUsersGuide:BaseChapter 122 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=GnuSmalltalkUsersGuide%3ABaseChapter_122"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_122&amp;action=history"/>
	<updated>2026-05-01T15:50:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_122&amp;diff=4110&amp;oldid=prev</id>
		<title>Onionmixer: GSUG ObjectMemory 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=GnuSmalltalkUsersGuide:BaseChapter_122&amp;diff=4110&amp;oldid=prev"/>
		<updated>2014-01-27T16:04:44Z</updated>

		<summary type="html">&lt;p&gt;GSUG ObjectMemory 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;;ObjectMemory&lt;br /&gt;
&lt;br /&gt;
==ObjectMemory==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;네임스페이스 Smalltalk에 정의됨&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;슈퍼클래스: Object&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;범주: 언어-구현&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:나는 가상 머신의 메모리 사용을 조정할 수 있도록 몇 가지 메서드를 제공한다. 또한 나는 가상 머신의 수명 중에 발생 가능한 일부 &amp;#039;이벤트&amp;#039;를 나의 종속자에게 시그널링 할 수 있다.&amp;lt;BR&amp;gt;ObjectMemory는 클래스측과 인스턴스측의 메서드를 모두 갖고 있다. 클래스측 메서드는 메모리 관리자의 매개변수를 조정하는 수단을 제공하는 반면 인스턴스측 메서드는 #current 클래스측 메서드와 함께 사용되어 메모리 관리자의 상태에 대한 통계를 볼 수 있다. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory 클래스: 접근하기===&lt;br /&gt;
&lt;br /&gt;
====current====&lt;br /&gt;
&lt;br /&gt;
VM의 메모리 관리 통계의 스냅샷을 리턴하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory 클래스: builtins===&lt;br /&gt;
&lt;br /&gt;
====abort====&lt;br /&gt;
&lt;br /&gt;
스몰토크 환경을 종료하고 core를 덤프하라.&lt;br /&gt;
&lt;br /&gt;
====addressOf: anObject====&lt;br /&gt;
&lt;br /&gt;
anObject가 참조하는 실제 객체의 어드레스를 리턴한다. 고정 객체만 제외하고 이 어드레스는 다음 쓰레기 수집 때까지만 유효하다; 따라서 오랜 시간 이 메서드가 리턴하는 어드레스를 신뢰하기는 꽤 위험하다.&lt;br /&gt;
&lt;br /&gt;
====addressOfOOP: anObject====&lt;br /&gt;
&lt;br /&gt;
anObject에 대한 OOP(객체 테이블 슬롯)의 어드레스를 리턴한다. 어드레스는 Integer로, 가상 머신이 중단되어 재시작되는 경우를 제외하면 시간이 지나도 변경되지 않을 것이다 (예: 쓰레기 수집기의 액션에 영향을 받지 않는다).&lt;br /&gt;
&lt;br /&gt;
====bigObjectThreshold====&lt;br /&gt;
&lt;br /&gt;
작은 객체들 간 참조의 집약성을 제공하길 바라면서 메인 힙(main heap) 외부에서 할당된 객체에 대해 가장 작은 크기를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====bigObjectThreshold: bytes====&lt;br /&gt;
&lt;br /&gt;
작은 객체들 간 참조의 집약성을 제공하길 바라면서 메인 힙(main heap) 외부에서 할당된 객체에 대해 가장 작은 크기를 설정하라. 바이트는 양의 SmallInteger이어야 한다.&lt;br /&gt;
&lt;br /&gt;
====compact====&lt;br /&gt;
&lt;br /&gt;
oldspace의 압축을 포함해 완전한(full) 쓰레기 수집을 강요하라.&lt;br /&gt;
&lt;br /&gt;
====finishIncrementalGC====&lt;br /&gt;
&lt;br /&gt;
점진적 쓰레기 수집에서 단계를 실행하라.&lt;br /&gt;
&lt;br /&gt;
====gcMessage====&lt;br /&gt;
&lt;br /&gt;
쓰레기 수집이 발생하고 있음을 나타내는 메시지가 stdout에 인쇄되는지를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====gcMessage: aBoolean====&lt;br /&gt;
&lt;br /&gt;
쓰레기 수집이 발생하고 있음을 나타내는 메시지가 stdout에 인쇄되는지를 설정하라.&lt;br /&gt;
&lt;br /&gt;
====globalGarbageCollect====&lt;br /&gt;
&lt;br /&gt;
강제로 완전한(full) 쓰레기 수집을 실행하라.&lt;br /&gt;
&lt;br /&gt;
====growThresholdPercent====&lt;br /&gt;
&lt;br /&gt;
system grows가 사용하는 메모리양의 비율, 즉, 시스템이 더 많은 메모리를 할당하려면 채워져 있어야 하는 메모리양의 비율을 응답하라.&lt;br /&gt;
&lt;br /&gt;
====growThresholdPercent: growPercent====&lt;br /&gt;
&lt;br /&gt;
system grows가 사용하는 메모리양의 비율, 즉, 시스템이 더 많은 메모리를 할당하려면 채워져 있어야 하는 메모리양의 비율을 설정하라.&lt;br /&gt;
&lt;br /&gt;
====growTo: numBytes====&lt;br /&gt;
&lt;br /&gt;
system grows가 사용하는 메모리양을 numBytes까지 증가시켜라.&lt;br /&gt;
&lt;br /&gt;
====incrementalGCStep====&lt;br /&gt;
&lt;br /&gt;
점진적 쓰레기 수집에서 단계를 실행하라.&lt;br /&gt;
&lt;br /&gt;
====quit====&lt;br /&gt;
&lt;br /&gt;
스몰토크 환경을 중단시켜라. 파일이 닫히고 다른 비슷한 cleanup이 발생하는지 여부는 플랫폼에 따라 달라진다.&lt;br /&gt;
&lt;br /&gt;
====quit: exitStatus====&lt;br /&gt;
&lt;br /&gt;
스몰토크 환경을 중단시키고 exitStatus 정수를 OS로 전달하라. 파일은 닫히고 다른 비슷한 cleanup이 발생한다. &lt;br /&gt;
&lt;br /&gt;
====scavenge====&lt;br /&gt;
&lt;br /&gt;
강제로 약한(minor) 쓰레기 수집을 실행하라.&lt;br /&gt;
&lt;br /&gt;
====smoothingFactor====&lt;br /&gt;
&lt;br /&gt;
가상 머신이 메모리 처리와 관련해 제공한 통계를 스무딩(smooth)하는 데 사용한 인수를 (0과 1사이) 응답하라. 0은 평균을 업데이트하고, 1은 스무딩을 비활성화한다 (통계는 마지막 값을 리턴한다).&lt;br /&gt;
&lt;br /&gt;
====smoothingFactor: rate====&lt;br /&gt;
&lt;br /&gt;
가상 머신이 메모리 처리와 관련해 제공한 통계를 스무딩하는 데 사용하는 인수를 (0과 1사이) 설정하라. 0은 평균을 업데이트하고, 1은 스무딩을 비활성화한다 (통계는 마지막 값을 리턴한다).&lt;br /&gt;
&lt;br /&gt;
====spaceGrowRate====&lt;br /&gt;
&lt;br /&gt;
시스템 grows가 사용한 메모리양의 비율을 응답하라.&lt;br /&gt;
&lt;br /&gt;
====spaceGrowRate: rate====&lt;br /&gt;
&lt;br /&gt;
시스템 grows가 사용한 메모리양의 비율을 설정하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory 클래스: 초기화===&lt;br /&gt;
&lt;br /&gt;
====changed: aSymbol====&lt;br /&gt;
&lt;br /&gt;
해당 설명 없음.&lt;br /&gt;
&lt;br /&gt;
====initialize====&lt;br /&gt;
&lt;br /&gt;
전역변수(globals)를 초기화하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory 클래스: 이미지 저장하기===&lt;br /&gt;
&lt;br /&gt;
====snapshot====&lt;br /&gt;
&lt;br /&gt;
시작 시 로딩된 이미지 파일에 스냅샷을 저장하라.&lt;br /&gt;
&lt;br /&gt;
====snapshot: aString====&lt;br /&gt;
&lt;br /&gt;
이미지를 aString 파일에 저장하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory: 접근하기===&lt;br /&gt;
&lt;br /&gt;
====allocFailures====&lt;br /&gt;
&lt;br /&gt;
old-space 할당자가 최소한으로 요청된 크기의 블록을 찾지 못하여 운영체제에게 더 많은 메모리를 요청해야 했던 경우의 횟수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====allocMatches====&lt;br /&gt;
&lt;br /&gt;
old-space 할당자가 요청된 크기와 정확히 일치하는 크기의 블록을 발견하였던 횟수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====allocProbes====&lt;br /&gt;
&lt;br /&gt;
old-space 할당자가 old-space에 있는 모든 객체를 할당하기 위해 여태까지 검사해야 했던 빈 블록의 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====allocSplits====&lt;br /&gt;
&lt;br /&gt;
old-space 할당자가 요청한 크기와 정확히 같은 크기의 블록을 찾지 못해 커다란 빈 블록을 두 개의 부분으로 나누어야 했던 경우의 횟수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====bytesPerOOP====&lt;br /&gt;
&lt;br /&gt;
일반 객체 포인터(사실상 명명된 인스턴스 변수와 같은 필드)가 차지하는 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====bytesPerOTE====&lt;br /&gt;
&lt;br /&gt;
객체 테이블 엔트리(사실상 SmallInteger만 제외하고 시스템 내에서 모든 객체에 의해 발생하는 오버헤드)가 차지하는 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====edenSize====&lt;br /&gt;
&lt;br /&gt;
젊은 세대의 &amp;#039;에덴(eden)&amp;#039; 영역 내 바이트 수를 (사실상 two scavenge 사이에 할당된 바이트 수이다) 응답하라.&lt;br /&gt;
&lt;br /&gt;
====edenUsedBytes====&lt;br /&gt;
&lt;br /&gt;
최근에 젊은 세대의 &amp;#039;에덴&amp;#039; 영역을 채운 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====fixedSpaceSize====&lt;br /&gt;
&lt;br /&gt;
쓰레기 수집기가 메모리 내에서 이동할 수 없는 객체에 헌신하는 특수 힙 내의 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====fixedSpaceUsedBytes====&lt;br /&gt;
&lt;br /&gt;
쓰레기 수집기가 메모리 내에서 이동할 수 없는 객체에 헌신하는 특수 힙을 현재 채운 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numCompactions====&lt;br /&gt;
&lt;br /&gt;
VM이 시작된 후로 발생한 oldspace 압축 횟수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numFixedOOPs====&lt;br /&gt;
&lt;br /&gt;
쓰레기 수집기가 메모리 내에서 이동할 수 없는 객체의 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numFreeOTEs====&lt;br /&gt;
&lt;br /&gt;
현재 객체 테이블에 해제시킨 엔트리 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numGlobalGCs====&lt;br /&gt;
&lt;br /&gt;
VM이 시작된 후로 발생한 전역적 쓰레기 수집의 (전체 힙의 컬렉션) 횟수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numGrowths====&lt;br /&gt;
&lt;br /&gt;
VM이 시작된 후로 oldspace가 증가한 횟수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numOTEs====&lt;br /&gt;
&lt;br /&gt;
현재 객체 테이블에 할당된 엔트리 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numOldOOPs====&lt;br /&gt;
&lt;br /&gt;
오래된 세대(old generation)에 상주하는 객체 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====numScavenges====&lt;br /&gt;
&lt;br /&gt;
VM이 시작된 후로 발생한 청소(scavenge) 횟수를 응답하라 (어린 세대의 빠른 수집).&lt;br /&gt;
&lt;br /&gt;
====numWeakOOPs====&lt;br /&gt;
&lt;br /&gt;
쓰레기 수집기가 현재 추적 중인 약한 객체의 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====oldSpaceSize====&lt;br /&gt;
&lt;br /&gt;
오래된 세대 내의 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====oldSpaceUsedBytes====&lt;br /&gt;
&lt;br /&gt;
현재 오래된 세대를 채우는 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====reclaimedBytesPerGlobalGC====&lt;br /&gt;
&lt;br /&gt;
전역적 쓰레기 수집 도중에 쓰레기로 밝혀진 평균 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====reclaimedBytesPerScavenge====&lt;br /&gt;
&lt;br /&gt;
청소(scavenge) 도중에 쓰레기로 밝혀진 평균 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====reclaimedPercentPerScavenge====&lt;br /&gt;
&lt;br /&gt;
청소(scavenge) 도중에 쓰레기로 밝혀진 할당된 바이트의 평균 비율을 응답하라. 숫자가 60-70 미만인 경우 에덴의 크기를 증가시켜야 함이 분명한데, 청소(scavenging)가 실행 시간의 상당 부분을 잡아 먹을 위험이 있기 때문이며, 재시작된 이미지를 측정하여 클래스나 메서드와 같은 수명 긴 객체들의 생성 시 추가로 발생하는 tenuring이 고려되지 않도록 한다. &lt;br /&gt;
&lt;br /&gt;
====survSpaceSize====&lt;br /&gt;
&lt;br /&gt;
어린 세대의 &amp;#039;생존자(survivor)&amp;#039; 영역 내의 바이트 수를 응답하라 (해당 영역은 어린 객체들이 청소 도중에 이동되는 영역이다).&lt;br /&gt;
&lt;br /&gt;
====survSpaceUsedBytes====&lt;br /&gt;
&lt;br /&gt;
현재 어린 세대의 &amp;#039;생존자&amp;#039; 영역을 채우는 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====tenuredBytesPerScavenge====&lt;br /&gt;
&lt;br /&gt;
청소(scavenge) 중에 oldspace로 향상된 평균 바이트 수를 응답하라.&lt;br /&gt;
&lt;br /&gt;
====timeBetweenGlobalGCs====&lt;br /&gt;
&lt;br /&gt;
두 번의 전역적 쓰레기 수집 간에 평균 시간을 밀리초로 응답하라.&lt;br /&gt;
&lt;br /&gt;
====timeBetweenGrowths====&lt;br /&gt;
&lt;br /&gt;
힙의 증가 결정 간 평균 시간을 밀리초로 응답하라.&lt;br /&gt;
&lt;br /&gt;
====timeBetweenScavenges====&lt;br /&gt;
&lt;br /&gt;
두 번의 청소(scavenge) 간에 평균 시간을 초로 응답하라 (어린 세대의 빠른 수집).&lt;br /&gt;
&lt;br /&gt;
====timeToCollect====&lt;br /&gt;
&lt;br /&gt;
전역적 쓰레기 수집에 소요되는 평균 시간을 밀리초로 응답하라.&lt;br /&gt;
&lt;br /&gt;
====timeToCompact====&lt;br /&gt;
&lt;br /&gt;
힙의 압축에 소요되는 평균 시간을 밀리초로 응답하라. 힙을 증가시켜 취하는 시간과 같다.&lt;br /&gt;
&lt;br /&gt;
====timeToScavenge====&lt;br /&gt;
&lt;br /&gt;
청소(scavenge)에 소요되는 평균 시간을 밀리초로 응답하라 (어린 세대의 빠른 수집).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory: builtins===&lt;br /&gt;
&lt;br /&gt;
====update====&lt;br /&gt;
&lt;br /&gt;
객체 내 값을 VM의 현재 상태로 업데이트하라.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===ObjectMemory: 도출된 정보===&lt;br /&gt;
&lt;br /&gt;
====scavengesBeforeTenuring====&lt;br /&gt;
&lt;br /&gt;
객체가 oldspace로 이동하기 전에 평균적으로 생존해야만 하는 청소(scavenge) 횟수를 응답하라; 이는 추정치에 불과한데, oldspace로부터 접근 가능한 객체는 곧 tenured될 가능성이 높은 반면 thisContext로부터만 접근 가능한 객체는 tenured될 가능성이 낮기 때문이다. 어쨌든 이 수치가 2-3 미만으로 떨어지면 에덴의 크기와/또는 생존 공간의 크기를 증가시켜야 함이 분명한데, 너무 자주 tenuring하기 때문이기도 하고 당신의 힙을 깨끗하게 유지하기 위해 전역적 쓰레기 수집에 너무 의존하기 때문이기도 하다; 재시작된 이미지를 측정하여 클래스나 메서드와 같은 수명 긴 객체들의 생성 시 추가로 발생하는 tenuring이 고려되지 않도록 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
[[Category:GnuSmalltalkUsersGuide]]&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>