<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DigiTechLog Dot Com &#187; Garbage Collection</title>
	<atom:link href="http://digitechlog.com/tag/garbage-collection/feed" rel="self" type="application/rss+xml" />
	<link>http://digitechlog.com</link>
	<description>Adobe AIR、Flex、Flash、Java</description>
	<lastBuildDate>Tue, 08 Nov 2011 12:46:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>JavaのGarbage Collectionとfinalizeの纏め</title>
		<link>http://digitechlog.com/2008/10/20/the-summary-of-java-garbage-collection-and-finalize.html</link>
		<comments>http://digitechlog.com/2008/10/20/the-summary-of-java-garbage-collection-and-finalize.html#comments</comments>
		<pubDate>Mon, 20 Oct 2008 01:37:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[finalize]]></category>
		<category><![CDATA[Garbage Collection]]></category>
		<category><![CDATA[GC]]></category>

		<guid isPermaLink="false">http://digitechlog.com/?p=17</guid>
		<description><![CDATA[C/C++で開発したライブラリをJNIでJavaのラップを作ってみます。一番難しいところはメモリの回収だと思います。いろいろなメモリリックの問題を出ますので、一つ一つで解決して、最後まだリックされてることろがありました！ちょっと時間をかかって調べましたが、原因はGarbage Collectionとfinalizeの問題です。自分の調べた結果を簡単で纏めます。

一、Garbage Collectionとはガベージコレクション（garbage collection; GC）とは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。「ガベージコレクション」を直訳すれば「ゴミ収集」となる。
二、注意点
１、Garbarge CollectionはC++のデストラクタ関数ではありません
２、オブジェクト対象を解放する保証はありません。
三、GCが呼ばれるタイミング
１、アプリケーション占用したメモリ量が多い過ぎの場合
２、明示でSystem.gc()を呼び出す場合
例：
/**
* File: Chair0.java
* @author Somebody
*/
class&#160;Chair0{
static boolean flag=true;
static int finalizeNum=0;
static int constructNum=0;
Chair0()
{
constructNum++;
}
public&#160;void finalize(){
flag=false;
finalizeNum++;
}
}
&#160;
/**
* File Garbage0.java
* @author Somebody
*/
public&#160;class Garbage0{
public&#160;static void main(String []args){
while(Chair0.flag){
new&#160;Chair0();
}
System.out.println(”You&#160;have created “+
Chair0.constructNum+” objects&#160;of Chair! And have finalized “+
Chair0.finalizeNum+” objects “);
}
}
実行結果１：
init:
&#160;
deps-jar:
&#160;
Compiling&#160;1 source file to C:\Documents and ettings\Somebody\BomClass\build\classes
&#160;
compile-single:
&#160;
run-single:
&#160;
You&#160;have created 9783 objects of Chair! And have finalized 5 objects
構築成功 (合計時間: 0 秒)
deps-jar:
&#160;
Compiling&#160;1 source [...]]]></description>
			<content:encoded><![CDATA[<p>C/C++で開発したライブラリをJNIでJavaのラップを作ってみます。一番難しいところはメモリの回収だと思います。いろいろなメモリリックの問題を出ますので、一つ一つで解決して、最後まだリックされてることろがありました！ちょっと時間をかかって調べましたが、原因はGarbage Collectionとfinalizeの問題です。自分の調べた結果を簡単で纏めます。<br />
<span id="more-17"></span><br />
<strong>一、Garbage Collectionとは</strong>ガベージコレクション（garbage collection; GC）とは、プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。「ガベージコレクション」を直訳すれば「ゴミ収集」となる。</p>
<p><strong>二、注意点</strong></p>
<p>１、Garbarge CollectionはC++のデストラクタ関数ではありません</p>
<p>２、オブジェクト対象を解放する保証はありません。</p>
<p><strong>三、GCが呼ばれるタイミング</strong></p>
<p>１、アプリケーション占用したメモリ量が多い過ぎの場合</p>
<p>２、明示でSystem.gc()を呼び出す場合</p>
<p>例：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">* File: Chair0.java</span></li>
<li><span style="color: #ffa500;">*</span><span style="color: Blue;"> @author </span><span style="color: #ffa500;">Somebody</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Chair0</span><span style="color: Olive;">{</span></li>
<li><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">boolean</span><span style="color: Gray;"> </span><span style="color: Blue;">flag</span><span style="color: Gray;">=</span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">finalizeNum</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">int</span><span style="color: Gray;"> </span><span style="color: Blue;">constructNum</span><span style="color: Gray;">=</span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">Chair0</span><span style="color: Olive;">()</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">constructNum</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">finalize</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Blue;">flag</span><span style="color: Gray;">=</span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">finalizeNum</span><span style="color: Gray;">++;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">* File Garbage0.java</span></li>
<li><span style="color: #ffa500;">*</span><span style="color: Blue;"> @author </span><span style="color: #ffa500;">Somebody</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">Garbage0</span><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Olive;">[]</span><span style="color: Blue;">args</span><span style="color: Olive;">){</span></li>
<li><span style="color: Green;">while</span><span style="color: Olive;">(</span><span style="color: Blue;">Chair0</span><span style="color: Gray;">.</span><span style="color: Blue;">flag</span><span style="color: Olive;">){</span></li>
<li><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Chair0</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">out</span><span style="color: Gray;">.</span><span style="color: Blue;">println</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">You</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;"> “+</span></li>
<li><span style="color: Blue;">Chair0</span><span style="color: Gray;">.</span><span style="color: Blue;">constructNum</span><span style="color: Gray;">+” </span><span style="color: Blue;">objects</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">of</span><span style="color: Gray;"> </span><span style="color: Blue;">Chair</span><span style="color: Gray;">! </span><span style="color: Blue;">And</span><span style="color: Gray;"> </span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">finalized</span><span style="color: Gray;"> “+</span></li>
<li><span style="color: Blue;">Chair0</span><span style="color: Gray;">.</span><span style="color: Blue;">finalizeNum</span><span style="color: Gray;">+” </span><span style="color: Blue;">objects</span><span style="color: Gray;"> “</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>実行結果１：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">init</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">deps</span><span style="color: Gray;">-</span><span style="color: Blue;">jar</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Compiling</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span><span style="color: Gray;"> </span><span style="color: Blue;">source</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:\</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Blue;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">ettings</span><span style="color: Gray;">\</span><span style="color: Blue;">Somebody</span><span style="color: Gray;">\</span><span style="color: Blue;">BomClass</span><span style="color: Gray;">\</span><span style="color: Blue;">build</span><span style="color: Gray;">\</span><span style="color: Blue;">classes</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">compile</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">run</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">You</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;"> </span><span style="color: Maroon;">9783</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span><span style="color: Gray;"> </span><span style="color: Blue;">of</span><span style="color: Gray;"> </span><span style="color: Blue;">Chair</span><span style="color: Gray;">! </span><span style="color: Blue;">And</span><span style="color: Gray;"> </span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">finalized</span><span style="color: Gray;"> </span><span style="color: Maroon;">5</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span></li></ol></div>
<p>構築成功 (合計時間: 0 秒)</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">deps</span><span style="color: Gray;">-</span><span style="color: Blue;">jar</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Compiling</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span><span style="color: Gray;"> </span><span style="color: Blue;">source</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:\</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Blue;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">ettings</span><span style="color: Gray;">\</span><span style="color: Blue;">Somebody</span><span style="color: Gray;">\</span><span style="color: Blue;">BomClass</span><span style="color: Gray;">\</span><span style="color: Blue;">build</span><span style="color: Gray;">\</span><span style="color: Blue;">classes</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">compile</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">run</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">You</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;"> </span><span style="color: Maroon;">9783</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span><span style="color: Gray;"> </span><span style="color: Blue;">of</span><span style="color: Gray;"> </span><span style="color: Blue;">Chair</span><span style="color: Gray;">! </span><span style="color: Blue;">And</span><span style="color: Gray;"> </span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">finalized</span><span style="color: Gray;"> </span><span style="color: Maroon;">5</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span></li></ol></div>
<p>構築成功 (合計時間: 0 秒)</p>
<p><strong>ここまでの質問：</strong></p>
<p>１、mainメソッドの終了するタイミング／条件は？</p>
<p>２、finalize（）関数が呼ばれるタイミングは？</p>
<p>もう一つ例：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">* File MyClass.java</span></li>
<li><span style="color: #ffa500;">*</span><span style="color: Blue;"> @author </span><span style="color: #ffa500;">Somebody</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">MyClass</span><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">private</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">name</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">name</span><span style="color: Olive;">){</span></li>
<li><span style="color: Green;">this</span><span style="color: Gray;">.</span><span style="color: Blue;">name</span><span style="color: Gray;">=</span><span style="color: Blue;">name</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">out</span><span style="color: Gray;">.</span><span style="color: Blue;">println</span><span style="color: Olive;">(</span><span style="color: Blue;">name</span><span style="color: Gray;">+” </span><span style="color: Blue;">is</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">created</span><span style="color: Gray;">.”</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">protected</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">finalize</span><span style="color: Olive;">()</span><span style="color: Gray;"> </span><span style="color: Green;">throws</span><span style="color: Gray;"> </span><span style="color: Blue;">Throwable</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">out</span><span style="color: Gray;">.</span><span style="color: Blue;">println</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">finalize</span><span style="color: Gray;"> “+</span><span style="color: Blue;">name</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">* File: Garbage1.java</span></li>
<li><span style="color: #ffa500;">*</span><span style="color: Blue;"> @author </span><span style="color: #ffa500;">Somebody</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">Garbage1</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: #ffa500;">/** Creates a new instance of Garbage */</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Garbage1</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Olive;">[]</span><span style="color: Blue;">args</span><span style="color: Olive;">){</span></li>
<li><span style="color: Blue;">runrun</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">runrun</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass1</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass1</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass2</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">==</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass3</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass4</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>実行結果２：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">init</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">deps</span><span style="color: Gray;">-</span><span style="color: Blue;">jar</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Compiling</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span><span style="color: Gray;"> </span><span style="color: Blue;">source</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:\</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Blue;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">Settings</span><span style="color: Gray;">\</span><span style="color: Blue;">Somebody</span><span style="color: Gray;">\</span><span style="color: Blue;">BomClass</span><span style="color: Gray;">\</span><span style="color: Blue;">build</span><span style="color: Gray;">\</span><span style="color: Blue;">classes</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">compile</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">run</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass1</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass2</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass3</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">finalize</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass2</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass4</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">finalize</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass3</span></li></ol></div>
<p>構築成功 (合計時間: 0 秒)</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">deps</span><span style="color: Gray;">-</span><span style="color: Blue;">jar</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Compiling</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span><span style="color: Gray;"> </span><span style="color: Blue;">source</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:\</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Blue;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">ettings</span><span style="color: Gray;">\</span><span style="color: Blue;">Somebody</span><span style="color: Gray;">\</span><span style="color: Blue;">BomClass</span><span style="color: Gray;">\</span><span style="color: Blue;">build</span><span style="color: Gray;">\</span><span style="color: Blue;">classes</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">compile</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">run</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">You</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;"> </span><span style="color: Maroon;">9783</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span><span style="color: Gray;"> </span><span style="color: Blue;">of</span><span style="color: Gray;"> </span><span style="color: Blue;">Chair</span><span style="color: Gray;">! </span><span style="color: Blue;">And</span><span style="color: Gray;"> </span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">finalized</span><span style="color: Gray;"> </span><span style="color: Maroon;">5</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span></li></ol></div>
<p>構築成功 (合計時間: 0 秒)</p>
<p>myClass2、myClass3がＧＣで回収されましたね。なぜmyClass4が回収されなかったですか。では、下記のソースを見ましょう。まだGarbage1です。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;">/**</span></li>
<li><span style="color: #ffa500;">* File: Garbage1.java</span></li>
<li><span style="color: #ffa500;">*</span><span style="color: Blue;"> @author </span><span style="color: #ffa500;">Somebody</span></li>
<li><span style="color: #ffa500;">*/</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">class</span><span style="color: Gray;"> </span><span style="color: Blue;">Garbage1</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: #ffa500;">/** Creates a new instance of Garbage */</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Garbage1</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Blue;">i</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">main</span><span style="color: Olive;">(</span><span style="color: Blue;">String</span><span style="color: Gray;"> </span><span style="color: Olive;">[]</span><span style="color: Blue;">args</span><span style="color: Olive;">){</span></li>
<li><span style="color: Blue;">runrun</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">public</span><span style="color: Gray;">&nbsp;</span><span class="hl-types">static</span><span style="color: Gray;"> </span><span class="hl-types">void</span><span style="color: Gray;"> </span><span style="color: Blue;">runrun</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass1</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass1</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass2</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span class="hl-types">int</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;">=</span><span style="color: Maroon;">1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">i</span><span style="color: Gray;">==</span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass3</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass4</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #ffa500;">// myClass5のケースを追加します</span></li>
<li><span style="color: Olive;">{</span></li>
<li><span style="color: Blue;">MyClass</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass</span><span style="color: Gray;">=</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">MyClass</span><span style="color: Olive;">(</span><span style="color: Gray;">”</span><span style="color: Blue;">myClass5</span><span style="color: Gray;">″</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">myClass</span><span style="color: Gray;"> = </span><span style="color: Green;">null</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">System</span><span style="color: Gray;">.</span><span style="color: Blue;">gc</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>実行結果３：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">init</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">deps</span><span style="color: Gray;">-</span><span style="color: Blue;">jar</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Compiling</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span><span style="color: Gray;"> </span><span style="color: Blue;">source</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:\</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Blue;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">Settings</span><span style="color: Gray;">\</span><span style="color: Blue;">Somebody</span><span style="color: Gray;">\</span><span style="color: Blue;">BomClass</span><span style="color: Gray;">\</span><span style="color: Blue;">build</span><span style="color: Gray;">\</span><span style="color: Blue;">classes</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">compile</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">run</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass1</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass2</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass3</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass4</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">finalize</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass3</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">myClass5</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">is</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;">.</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">finalize</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass2</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">finalize</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass4</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">finalize</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">myClass5</span></li></ol></div>
<p>構築成功 (合計時間: 0 秒)</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">deps</span><span style="color: Gray;">-</span><span style="color: Blue;">jar</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">Compiling</span><span style="color: Gray;">&nbsp;</span><span style="color: Maroon;">1</span><span style="color: Gray;"> </span><span style="color: Blue;">source</span><span style="color: Gray;"> </span><span style="color: Blue;">file</span><span style="color: Gray;"> </span><span style="color: Blue;">to</span><span style="color: Gray;"> </span><span style="color: Blue;">C</span><span style="color: Gray;">:\</span><span style="color: Blue;">Documents</span><span style="color: Gray;"> </span><span style="color: Blue;">and</span><span style="color: Gray;"> </span><span style="color: Blue;">ettings</span><span style="color: Gray;">\</span><span style="color: Blue;">Somebody</span><span style="color: Gray;">\</span><span style="color: Blue;">BomClass</span><span style="color: Gray;">\</span><span style="color: Blue;">build</span><span style="color: Gray;">\</span><span style="color: Blue;">classes</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">compile</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">run</span><span style="color: Gray;">-</span><span style="color: Blue;">single</span><span style="color: Gray;">:</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">You</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">created</span><span style="color: Gray;"> </span><span style="color: Maroon;">9783</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span><span style="color: Gray;"> </span><span style="color: Blue;">of</span><span style="color: Gray;"> </span><span style="color: Blue;">Chair</span><span style="color: Gray;">! </span><span style="color: Blue;">And</span><span style="color: Gray;"> </span><span style="color: Blue;">have</span><span style="color: Gray;"> </span><span style="color: Blue;">finalized</span><span style="color: Gray;"> </span><span style="color: Maroon;">5</span><span style="color: Gray;"> </span><span style="color: Blue;">objects</span></li></ol></div>
<p>構築成功 (合計時間: 0 秒)</p>
<p>myClass2、myClass3、myClass4、myClass5が回収されました！</p>
<p><strong>結論：</strong></p>
<p><strong>１、 </strong><strong>終了するまで全部変数を回収するではありません。</strong></p>
<p><strong>２、 </strong><strong>最後の変数スコープを無効になっても解放されない可能性があります。</strong></p>
<p><strong>３、 </strong><strong>終了した後まだ回収されていないメモリをＯＳに渡して管理します。</strong></p>
<p><strong>４、 </strong><strong>使っている対象に対して、ＧＣは回収しておりません。（</strong>myClass1<strong>）</strong></p>
<p>※参考（自分の別のブログなので、参考というのは大丈夫ですよね。＾＾！）：</p>
<p><a href="http://blog.minidx.com/2007/10/16/15.html">http://blog.minidx.com/2007/10/16/15.html</a><br />
<h3>Random Posts</h3>
<ul class="related_post">
<li><a href="http://digitechlog.com/2010/06/15/how-to-link-a-button-to-a-url-actionscript-and-flash.html" title="どのようにURLにボタンをリンクする &#8211; ActionScriptとフラッシュ">どのようにURLにボタンをリンクする &#8211; ActionScriptとフラッシュ</a></li>
<li><a href="http://digitechlog.com/2009/12/12/dynamically-add-script-to-frames-of-a-movieclip-with-as3.html" title="動的にAS3でMovieClipのフレームにスクリプトを追加する">動的にAS3でMovieClipのフレームにスクリプトを追加する</a></li>
<li><a href="http://digitechlog.com/2009/02/25/servebox-foundry-an-actionscript-3-java-framework-designed-for-flex-2-3-applications-development.html" title="ServeBox Foundry (sbasfoundry): オープンソースのFlex 2/3アプリケーションを開発するActionScript 3 / Javaフレームワーク">ServeBox Foundry (sbasfoundry): オープンソースのFlex 2/3アプリケーションを開発するActionScript 3 / Javaフレームワーク</a></li>
<li><a href="http://digitechlog.com/2009/06/30/red5-is-an-open-source-flash-server-written-in-java.html" title="Red5: フリーのFlashMediaServer互換できるFlashストリーミングサーバ">Red5: フリーのFlashMediaServer互換できるFlashストリーミングサーバ</a></li>
<li><a href="http://digitechlog.com/2010/01/29/potras-convert-bitmap-data-vector-in-actionscript3.html" title="PotrAs: ２色のラスタ画像（BitmapData）からベクタ変換するActionScript 3ライブラリ">PotrAs: ２色のラスタ画像（BitmapData）からベクタ変換するActionScript 3ライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/01/30/glaze-2d-rigid-body-dynamics-game-engine-for-actionsctipt-3.html" title="glaze: ActionScript用2D物理演算エンジン">glaze: ActionScript用2D物理演算エンジン</a></li>
<li><a href="http://digitechlog.com/2010/01/28/box2dflashas3-open-source-physics-library-box2d.html" title="Box2DFlashAS3: 物理演算シミュレーションを可能にするActionScriptライブラリ">Box2DFlashAS3: 物理演算シミュレーションを可能にするActionScriptライブラリ</a></li>
<li><a href="http://digitechlog.com/2010/06/28/begin-learning-flash-in-a-flash.html" title="フラッシュでフラッシュを勉強する">フラッシュでフラッシュを勉強する</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://digitechlog.com/2008/10/20/the-summary-of-java-garbage-collection-and-finalize.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

