【事件の表示】
　特願２００５−３７４６０６「階層的ヒープ管理方法及び装置」拒絶査定不服審判事件〔平成１９年　７月１２日出願公開、特開２００７−１７９１５４〕について、次のとおり審決する。
【結　論】
　本件審判の請求は、成り立たない。
【理　由】
第１　手続の経緯
　
　本願は，平成１７年１２月２７日を出願日とする出願であって，平成２０年９月２日付けで審査請求がなされ，平成２３年１１月８日付けで拒絶理由通知（同年同月１５日発送）がなされ，平成２４年１月１６日付けで意見書が提出されるとともに，同日付けで手続補正がなされたが，同年２月３日付けで拒絶査定（同年同月７日謄本送達）がなされ，同年５月７日付けで「原査定を取り消す，本願は特許をすべきものであるとの審決を求める。」を趣旨とする審判請求がされたものである。
　
第２　本願発明
　
　本願の請求項１に係る発明は，平成２４年１月１６日付けの手続補正書により補正された特許請求の範囲の請求項１に記載されたとおりの次の事項により特定されるものである。（以下「本願発明」という。）
　
　「階層的に管理された複数のヒープをプログラムの実行時に確保し，ヒープ内にメモリを確保して使用し，ヒープをクリアするヒープ管理方法であって，
　生成したオブジェクトを特定する変数を要素とする集合を作成する処理と，
　第１のヒープを確保する処理と，
　第２のヒープを確保し，該第２のヒープを前記第１のヒープの下位層として記憶する処理と，
　前記第２のヒープ内にオブジェクトを生成し，該オブジェクトを特定する前記変数を前記集合に追加する処理と，
　前記第１のヒープをクリアする際に，下位層である前記第２のヒープをクリアする処理と，
　前記第２のヒープをクリアする際に，前記集合から前記第２のヒープ内のオブジェクトを特定する前記変数を除去する処理と，
を具えることを特徴とする階層的ヒープ管理方法。」
　
第３　引用文献等
　本願の出願日よりも前に頒布又は電気通信回線を通じて公衆に利用可能となり，原審の拒絶査定の理由である上記平成２３年１１月８日付けの拒絶理由通知において引用された，下記引用文献には，関連する図面とともに，それぞれ下記の事項が記載されている。（当審注：下線は，参考のために当審で付与したものである。）
　
＜引用文献＞
　特表２００５−５３１０５０号公報（平成１７年１０月１３日公表）
　　　
Ａ「【請求項１】
　
階層的なツリーの関係を有するオブジェクトのセットと関連付けられるメモリを解放する方法であって，前記方法はコンピュータで実現されるステップを含み，前記コンピュータで実現されるステップは，
　
前記階層的なツリーの関係を有する前記オブジェクトのセットを作成するステップと，
　
各オブジェクトに対してメモリを割当てるステップと，
　
各オブジェクトに対する前記メモリ間の関係を規定するデータを維持するステップとを含み，
　
前記データは前記階層的なツリーの関係の組織を反映し，前記コンピュータで実現されるステップはさらに，
　
オブジェクトと関連付けられるメモリを解放するための要求を受取るステップと，
　
前記要求を受取ることに応答して，
　
どのメモリが前記オブジェクトの子孫である１つまたは複数のオブジェクトと関連付けられるかを決定するために前記データにアクセスするステップと，
　
前記オブジェクトと関連付けられるメモリおよび前記オブジェクトの前記子孫と関連付けられるメモリを解放するステップとを含む，方法。
【請求項２】
　
前記階層的なツリーの関係の頂点にあるオブジェクトと関連付けられるメモリはヒープであり，前記階層的なツリーの関係で残りのオブジェクトと関連付けられるメモリは前記ヒープのサブヒープであり，前記割当てるステップは，
　
前記階層的なツリーの関係で前記頂点にあるオブジェクトに対して前記ヒープを割当て，かつ前記残りのオブジェクトに対して前記ヒープの前記サブヒープを割当てるステップをさらに含
　
Ｂ「【発明が解決しようとする課題】
【０００６】
　特定のオブジェクトおよびそのオブジェクトの下にあるオブジェクトは階層的なツリーの下位ツリーを形成する。たとえば，特定のステートメントオブジェクト，および，たとえば，結果セットオブジェクトおよびストリームオブジェクトなどのその特定のステートメントオブジェクトの下にあるすべてのオブジェクトは，階層的なツリーの下位ツリーを形成する。
下位ツリー，および下位ツリーでオブジェクトと関連付けられるメモリは，メモリ管理の下位ツリーを形成する。
この特定のオブジェクトの下にあるオブジェクト（以降は，特定のオブジェクトの「子孫」と称される）
【０００７】
　したがって，アプリケーションプログラムのための一意のメモリ管理コードを提供する必要があるだけでなく，このメモリ管理コードがそのアプリケーションで使用されるクラスのインスタンスであるすべてのオブジェクトによって共有されるように提供する必要もあることがわかる。さらに，アプリケーションプログラムに対して透過的な態様で階層的なツリーのオブジェクトのセットとこれらオブジェクトと関連付けられるメモリとの間の関係を追跡する必要もあることがわかる。そうする中で，アプリケーションプログラムは，階層的なツリー内の１つの特定のオブジェクトに対して解放を発行することができ，これは結果として，その特定のオブジェクトで開始するメモリ管理の下位ツリーを解放することになる。」
　
Ｃ「【００３８】
　オブジェクトの階層的なツリー
　図７は，この発明の実施例による互いに階層的なツリー関係（以降は「階層的なツリー」と称される）を有するオブジェクトのセットのブロック図である。たとえば，所与のデータベース接続では，１つまたは複数の照会はステートメントを伴って実行される。結果セットが照会に応答して戻される。ストリームは，１つのファンクションコールで読出すことができないバイナリラージオブジェクト（Binary　Large　Objects）などの大きなデータオブジェクトの読出を調整するために結果セットから獲得される。したがって，階層的な関係は，データベース接続，および関連するステートメント，結果セットおよびストリームの間に存在する。接続および関連するステートメント，結果セットおよびストリームは各々オブジェクトによって表現することができ，オブジェクトはオブジェクト間の関係を反映した階層的なツリーに組織化することができる。」
　
Ｄ「【００４０】
　オブジェクトの階層的なツリーと関連付けられるメモリ
　図８は，この発明の実施例によるオブジェクトのセットの各オブジェクトと関連付けられるいくつかのメモリのブロック図である。
いくつかのメモリ（以降は，階層的なメモリのツリーと称される）は，オブジェクトのセットの階層的なツリーの関係を反映するように組織化される。
【００４１】
　一実施例によると，ヒープは階層的なツリーの頂点のオブジェクトと関連付けられる１つのメモリであり，このヒープのサブヒープは，残りのオブジェクトと関連付けられるいくつかのメモリである。たとえば，図７では，頂点のオブジェクトConn＿１と関連付けられるＨ０はヒープとなり，残りのオブジェクト（Ｈ１，Ｈ２，Ｈ３等）と関連付けられるメモリはＨ０のサブヒープである。
【００４２】
　
階層的なメモリのツリーの階層を決定する階層的なデータが維持され，階層的なメモリのツリーが階層的なツリー内のオブジェクトのセット間の関係を反映するように維持される。このデータは，とりわけ，（１）オブジェクトのセットのデータメンバ内，（２）オブジェクトのセットと関連付けられるメモリ内，または（３）１つまたは複数のテーブル内で維持されるポインタおよび参照であり得る。
【００４３】
　オブジェクトのセットの階層的な関係を反映する階層的なデータをメモリに対して維持することによって，メモリの下位ツリーは，オブジェクトのデストラクタまたは関数（function）などの単一の要求で解放することができ，階層的なツリー内の他のオブジェクト，または階層的なツリー内の他のオブジェクトと関連付けられるメモリに影響しない。」
　
Ｅ「【００４５】
　単一の要求を使用するメモリの下位ツリーと関連付けられるメモリの解放
　図９，図１０Ａおよび図１０Ｂは，この発明の実施例による階層的な関係を有するオブジェクトを作成するためのクラス，およびこれらオブジェクトと関連付けられるメモリをのブロック図である。図９は，接続，ステートメントおよび結果セットのクラスに対してクラスの規定を示すブロック図である。図１０Ａおよび図１０Ｂは，これらクラスと関連付けられるメソッドのブロック図である。この例では，クラスは接続，ステートメントおよび結果セットのオブジェクトを作成するために使用される。図１１は，この発明の実施例による，図９，図１０Ａおよび図１０Ｂに示されるクラスとともにオブジェクトを作成するプログラムを示すブロック図である。
【００４６】
　
一実施例によると，単一の要求でメモリの下位ツリーと関連付けられるメモリの解放は，共通のメモリ管理とともに行なわれる。
同様に，オブジェクトＡが破壊されるとき，
これは削除のオペレータ２４０を起動する。削除のオペレータ２４０，または削除のオペレータ２４０が起動する関数が，階層的なデータを横断して，オブジェクトＡと関連付けられるメモリ，およびオブジェクトＡと関連付けられる下位ツリーを解放する。
デストラクタは子および兄弟のポインタを使用して，サブヒープＨ１，Ｈ１１，Ｈ１２，Ｈ１１１が解放されるべきであると決定することができる。
【００４７】
　別の実施例によると，
単一の要求でメモリの下位ツリーと関連付けられるメモリの解放
【００４８】
  メモリへのポインタ（９０６，９１６，９２３）は，階層的なツリーでオブジェクトを作成するために使用される各クラス（９００，９１０，９２０）と関連付けられる。たとえば，接続クラス９００，ステートメントクラス９１０，および結果セットクラス９２０は，すべてヒープまたはサブヒープへのポインタ（９０６，９１６，９２３）を有する。コンストラクタ（１０００，１０２０，１０４０）は，初期化の命令（１００１，１０２１，１０４１）を使用してこれらポインタ（９０６，９１６，９２３）を初期化するために使用される。たとえば，接続のコンストラクタ（connection's constructor）１０００，ステートメントのコンストラクタ（statement's constructor）１０２０および結果セットのコンストラクタ（resultset's constructor）１０４０は，初期化の命令１００１，１０２１および１０４１で，ヒープまたはサブヒープに向くようにそれぞれのメモリのポインタを初期化する。
ファクトリメソッド
は，
たとえば，接続のcreateStatementメソッド（connection's createStatement method）１０１０は，（１）接続オブジェクトのヒープ（９０６）の新しいサブヒープを命令１０１１で作成し，（２）ステートメントオブジェクトを作成し，新しく作成されたサブヒープを命令１０１２でステートメントオブジェクトと関連付け，（３）サブヒープに対して子および兄弟のポインタ（９０７および９０８）の形で階層的なデータを維持して，命令１０１３でサブヒープがオブジェクトのセット間の階層的な関係を反映するようにする。
【００５０】
　別の実施例
　別の実施例によると，階層的なメモリのツリーのためのすべてのメモリは連続した１つのメモリにあり，これは階層的なツリー内で各オブジェクトと関連付けられるメモリの別々の部分にさらに分けられる。
ポインタは，個々のオブジェクトと関連付けられるメモリの部分の間の関係を維持するために使用される。これらポインタを維持するための方法であればどのような方法でも使用可能であり，たとえば，単一のメモリ自身にポインタを維持すること，またはテーブルにポインタを維持することが可能である。
　
　以下に，上記引用文献の記載事項について検討する。
　
（ア）上記Ａの記載から，引用文献には，
　“階層的なツリーの関係を有するオブジェクトのセットと関連付けられるメモリを解放する方法であって，前記方法はコンピュータで実現されるステップを含み，前記コンピュータで実現されるステップは，
　前記階層的なツリーの関係を有する前記オブジェクトのセットを作成するステップと，
　各オブジェクトに対してメモリを割当てるステップと，
　各オブジェクトに対する前記メモリ間の関係を規定するデータを維持するステップとを含み，
　前記データは前記階層的なツリーの関係の組織を反映し，前記コンピュータで実現されるステップはさらに，
　オブジェクトと関連付けられるメモリを解放するための要求を受取るステップと，
　前記要求を受取ることに応答して，
　どのメモリが前記オブジェクトの子孫である１つまたは複数のオブジェクトと関連付けられるかを決定するために前記データにアクセスするステップと，
　前記オブジェクトと関連付けられるメモリおよび前記オブジェクトの前記子孫と関連付けられるメモリを解放するステップとを含み，
　前記階層的なツリーの関係の頂点にあるオブジェクトと関連付けられるメモリはヒープであり，前記階層的なツリーの関係で残りのオブジェクトと関連付けられるメモリは前記ヒープのサブヒープであり，前記割当てるステップは，
　前記階層的なツリーの関係で前記頂点にあるオブジェクトに対して前記ヒープを割当て，かつ前記残りのオブジェクトに対して前記ヒープの前記サブヒープを割当てるステップをさらに含む，方法”が記載されていると解される。
　
（イ）上記（ア）における“各オブジェクトに対する前記メモリ間の関係を規定するデータ”に関し，
　上記Ｄの「階層的なメモリのツリーの階層を決定する階層的なデータが維持され，階層的なメモリのツリーが階層的なツリー内のオブジェクトのセット間の関係を反映するように維持される。このデータは，とりわけ，（１）オブジェクトのセットのデータメンバ内，（２）オブジェクトのセットと関連付けられるメモリ内，または（３）１つまたは複数のテーブル内で維持されるポインタおよび参照であり得る。」との記載から，
　前記“各オブジェクトに対する前記メモリ間の関係を規定するデータ”は，“階層的なメモリのツリーが階層的なツリー内のオブジェクトのセット間の関係を反映し，オブジェクトのセットのデータメンバ内，オブジェクトのセットと関連付けられるメモリ内，又はテーブル内で維持されるポインタおよび参照を含”むことが読み取れる。
　
（ウ）上記Ｅに「一実施例によると，単一の要求でメモリの下位ツリーと関連付けられるメモリの解放は，共通のメモリ管理とともに行なわれる。・・・同様に，オブジェクトＡが破壊されるとき，・・・これは削除のオペレータ２４０を起動する。削除のオペレータ２４０，または削除のオペレータ２４０が起動する関数が，階層的なデータを横断して，オブジェクトＡと関連付けられるメモリ，およびオブジェクトＡと関連付けられる下位ツリーを解放する。」，「デストラクタは子および兄弟のポインタを使用して，サブヒープＨ１，Ｈ１１，Ｈ１２，Ｈ１１１が解放されるべきであると決定することができる。」及び「単一の要求でメモリの下位ツリーと関連付けられるメモリの解放」との記載があり，上記「オブジェクトＡと関連付けられる下位ツリーを解放」することとは，上記Ｂの「この特定のオブジェクトの下にあるオブジェクト（以降は，特定のオブジェクトの「子孫」と称される）」との記載から，オブジェクトＡの子孫であるオブジェクトと関連付けられるメモリを解放することであるから，
　引用文献には，“要求に応じてオブジェクトが破壊されると，階層的なデータを横断して，オブジェクトと関連付けられるメモリ，およびオブジェクトの子孫であるオブジェクトと関連付けられるメモリを解放する”ことが記載されていると解される。
　
（エ）上記Ｅの「ポインタは，個々のオブジェクトと関連付けられるメモリの部分の間の関係を維持するために使用される。これらポインタを維持するための方法であればどのような方法でも使用可能であり，たとえば，単一のメモリ自身にポインタを維持すること，またはテーブルにポインタを維持することが可能である。」との記載から，
　上記“ポインタのテーブル内での維持”は，“単一のメモリ自身ではないテーブルにおいて行われる”ことが記載されているといえる。
　
　以上，（ア）ないし（エ）を踏まえると，引用文献には，次の発明（以下，「引用発明」という。）が記載されているものと認める。
　
　階層的なツリーの関係を有するオブジェクトのセットと関連付けられるメモリを解放する方法であって，前記方法はコンピュータで実現されるステップを含み，前記コンピュータで実現されるステップは，
　前記階層的なツリーの関係を有する前記オブジェクトのセットを作成するステップと，
　各オブジェクトに対してメモリを割当てるステップと，
　各オブジェクトに対する前記メモリ間の関係を規定するデータを維持するステップとを含み，
　前記データは前記階層的なツリーの関係の組織を反映し，前記コンピュータで実現されるステップはさらに，
　オブジェクトと関連付けられるメモリを解放するための要求を受取るステップと，
　前記要求を受取ることに応答して，
　どのメモリが前記オブジェクトの子孫である１つまたは複数のオブジェクトと関連付けられるかを決定するために前記データにアクセスするステップと，
　前記オブジェクトと関連付けられるメモリおよび前記オブジェクトの前記子孫と関連付けられるメモリを解放するステップとを含み，
　前記階層的なツリーの関係の頂点にあるオブジェクトと関連付けられるメモリはヒープであり，前記階層的なツリーの関係で残りのオブジェクトと関連付けられるメモリは前記ヒープのサブヒープであり，前記割当てるステップは，
　前記階層的なツリーの関係で前記頂点にあるオブジェクトに対して前記ヒープを割当て，かつ前記残りのオブジェクトに対して前記ヒープの前記サブヒープを割当てるステップをさらに含み，
　前記各オブジェクトに対する前記メモリ間の関係を規定するデータは，階層的なメモリのツリーが階層的なツリー内のオブジェクトのセット間の関係を反映し，オブジェクトのセットのデータメンバ内，オブジェクトのセットと関連付けられるメモリ内，又はテーブル内で維持されるポインタおよび参照を含み，
　要求に応じてオブジェクトが破壊されると，階層的なデータを横断して，オブジェクトと関連付けられるメモリ，およびオブジェクトの子孫であるオブジェクトと関連付けられるメモリを解放するものであり，
　前記ポインタのテーブル内での維持は，単一のメモリ自身ではないテーブルにおいて行われる，
　方法。
　
第４　対比・判断
　
１．本願発明と引用発明との対比
　本願発明と引用発明とを対比する。
　
（ア）引用発明において「解放」の対象である「メモリ」とは，上記Ｅの「メモリの下位ツリーと関連付けられるメモリの解放は，共通のメモリ管理とともに行なわれる。」との記載，上記Ｂの「下位ツリー，および下位ツリーでオブジェクトと関連付けられるメモリは，メモリ管理の下位ツリーを形成する。」との記載，上記Ｄの「いくつかのメモリ（以降は，階層的なメモリのツリーと称される）は，オブジェクトのセットの階層的なツリーの関係を反映するように組織化される。」との記載，及び，上記Ｅの「ファクトリメソッド・・・は，・・・たとえば，接続のcreateStatementメソッド（connection's createStatement method）１０１０は，（１）接続オブジェクトのヒープ（９０６）の新しいサブヒープを命令１０１１で作成し，（２）ステートメントオブジェクトを作成し，新しく作成されたサブヒープを命令１０１２でステートメントオブジェクトと関連付け，（３）サブヒープに対して子および兄弟のポインタ（９０７および９０８）の形で階層的なデータを維持して，命令１０１３でサブヒープがオブジェクトのセット間の階層的な関係を反映するようにする。」との記載によれば，メモリ管理の下，階層的なメモリのツリーとして，オブジェクトのセットの階層的なツリーの関係を反映するように組織化されており，これは階層的に管理されているといえるものであり，また「ヒープ」と呼べるものである。
　また，引用発明である「メモリを解放する方法」は「オブジェクトのセットを作成するステップ」，「各オブジェクトに対してメモリを割当てるステップ」，及び，「メモリを解放するステップ」を含むものであるところ，上記Ｂの段落【０００７】におけるアプリケーションプログラムのためのメモリの使用及び解放についての記載を参酌すると，引用発明である「メモリを解放する方法」が，アプリケーションプログラムの実行時にメモリを確保して使用し，その後解放することを前提とすることは，当業者にとって自明である。
　してみると，引用発明の「階層的なツリーの関係を有するオブジェクトのセットと関連付けられるメモリを解放する方法」は，本願発明の「階層的に管理された複数のヒープをプログラムの実行時に確保し，ヒープ内にメモリを確保して使用し，ヒープをクリアするヒープ管理方法」に相当するといえる。
　
（イ）引用発明における「各オブジェクトに対する前記メモリ間の関係を規定するデータ」は，「オブジェクトのセットのデータメンバ内，オブジェクトのセットと関連付けられるメモリ内，又はテーブル内で維持されるポインタおよび参照を含」むことから，生成されたオブジェクトを特定するために作成された情報であるといえ，また「データメンバ」や「テーブル」等内で複数維持されていることは明らかであることから，集合に他ならない。
　してみると，引用発明の「階層的なメモリのツリーが階層的なツリー内のオブジェクトのセット間の関係を反映し，オブジェクトのセットのデータメンバ内，オブジェクトのセットと関連付けられるメモリ内，又はテーブル内で維持されるポインタおよび参照を含」む，「各オブジェクトに対する前記メモリ間の関係を規定するデータを維持するステップ」と，本願発明の「生成したオブジェクトを特定する変数を要素とする集合を作成する処理」とは，共に，“生成したオブジェクトを特定する情報を要素とする集合を作成する処理”である点で共通するといえる。
　
（ウ）引用発明の「各オブジェクトに対してメモリを割当てるステップ」のうち，「階層的なツリーの関係で前記頂点にあるオブジェクトに対して前記ヒープを割当て」る「ステップ」は，本願発明の「第１のヒープを確保する処理」に相当するといえる。
　
（エ）引用発明の「各オブジェクトに対してメモリを割当てるステップ」のうち，「残りのオブジェクトに対して前記ヒープの前記サブヒープを割当てるステップ」は，「どのメモリが前記オブジェクトの子孫である１つまたは複数のオブジェクトと関連付けられるかを決定するために前記データにアクセスする」こと，及び，「階層的なツリーの関係の頂点にあるオブジェクトと関連付けられるメモリはヒープであり，前記階層的なツリーの関係で残りのオブジェクトと関連付けられるメモリは前記ヒープのサブヒープであ」ることを前提に行うものであり，この場合，「階層的なツリーの関係の頂点にあるオブジェクトと関連付けられるメモリ」である「ヒープ」に対し「子孫である１つまたは複数のオブジェクトと関連付けられる」「メモリ」は，「階層的なツリーの関係で残りのオブジェクトと関連付けられるメモリ」であることから「サブヒープ」であり，これは上記「ヒープ」の下位層に当たるものであり，そして何らかの記憶領域に記憶することは明らかである。
　また，引用発明の上記「前記残りのオブジェクトに対して前記ヒープの前記サブヒープを割当てるステップ」は，サブヒープに上記残りのオブジェクトを関係付ける処理といえるものであり，同様に本願発明の「第２のヒープ内にオブジェクトを生成」することも，上位概念として，第２のヒープにオブジェクトを関係付ける処理といえる。
　してみると，引用発明の「階層的なメモリのツリー」としての管理の下で「各オブジェクトに対してメモリを割当てるステップ」のうち，「子孫である１つまたは複数のオブジェクト」であって「階層的なツリーの関係で」「前記残りのオブジェクトに対して前記ヒープの前記サブヒープを割当てるステップ」と，本願発明の「第２のヒープを確保し，該第２のヒープを前記第１のヒープの下位層として記憶する処理と，前記第２のヒープ内にオブジェクトを生成し，該オブジェクトを特定する前記変数を前記集合に追加する処理」とは，共に，“第２のヒープを確保し，該第２のヒープを前記第１のヒープの下位層として記憶する処理と，前記第２のヒープにオブジェクトを関係付ける処理”である点で共通するといえる。
　
（オ）引用発明の「メモリ」の「解放」は，本願発明の「ヒープ」の「クリア」に相当する。したがって，引用発明の「前記オブジェクトと関連付けられるメモリおよび前記オブジェクトの前記子孫と関連付けられるメモリを解放するステップ」と，本願発明の「前記第１のヒープをクリアする際に，下位層である前記第２のヒープをクリアする処理」とは，共に，“前記第１のヒープをクリアするとともに，下位層である前記第２のヒープをクリアする処理”である点で共通するといえる。
　
　以上の対比から，本願発明と引用発明とは，以下の点で一致し，また，以下の点で相違する。
　
（一致点）
　階層的に管理された複数のヒープをプログラムの実行時に確保し，ヒープ内にメモリを確保して使用し，ヒープをクリアするヒープ管理方法であって，
　生成したオブジェクトを特定する情報を要素とする集合を作成する処理と，
　第１のヒープを確保する処理と，
　第２のヒープを確保し，該第２のヒープを前記第１のヒープの下位層として記憶する処理と，
　前記第２のヒープにオブジェクトを関係付ける処理と，
　前記第１のヒープをクリアするとともに，下位層である前記第２のヒープをクリアする処理と，
を具えることを特徴とする階層的ヒープ管理方法。　
　
（相違点１）　
　第２のヒープにオブジェクトを関係付ける処理に関し，本願発明が「第２のヒープ内にオブジェクトを生成」するものであるのに対し，引用発明は，サブヒープとそれに関係付けられる子孫のオブジェクトに対する処理についてそのような言及がない点。
　
（相違点２）
　生成したオブジェクトを特定する情報に関し，本願発明が，生成したオブジェクトを特定する「変数」を要素とする集合を作成するものであり，第２のヒープ内にオブジェクトを生成すると，「オブジェクトを特定する前記変数を前記集合に追加する処理」を行い，また，「第２のヒープをクリアする際に，前記集合から前記第２のヒープ内のオブジェクトを特定する前記変数を除去する処理」を行っているのに対し，引用発明は，生成したオブジェクトを特定する情報は「データ」であり，また，サブヒープと子孫のオブジェクトとの関係付けの処理に伴う「データ」の追加の処理や，サブヒープの解放に伴う「データ」の除去の処理について具体的な言及がない点。
　
（相違点３）　
　第１のヒープをクリアするとともに，下位層である第２のヒープをクリアする処理に関し，本願発明が，「第１のヒープをクリアする際に，下位層である前記第２のヒープをクリアする」こととしているのに対し，引用発明は，頂点にあるオブジェクトのヒープの解放とその子孫であるオブジェクトのサブヒープの解放との前後関係について明確に言及がなく，また，頂点にあるオブジェクトのヒープの解放がオブジェクトの削除に伴うものと特定されている点。
　
２．当審判断
　上記（相違点１）ないし（相違点３）について検討する。
　
（相違点１）及び（相違点２）について
　一般にオブジェクト指向言語の分野において，生成したオブジェクトの情報をヒープ領域内に格納することは技術常識であり，引用発明において「オブジェクト」を生成する際に「ヒープ」内に生成するように構成することは，自明である。
　また，プログラムにおいてデータを参照し特定するために変数を用いることは，例示するまでもなく周知の技術であり，当該周知技術を，オブジェクトの特定のために用いることに格別困難性があるとも認められず，そして，引用発明におけるオブジェクトを特定する情報が「階層的なメモリのツリーが階層的なツリー内のオブジェクトのセット間の関係を反映」するものであり，上記Ｄの【００４０】に記載があるオブジェクトのセットの階層的なツリーの関係の追跡に用いられるものであることを参酌すれば，ヒープに対しオブジェクトが生成されるとそのための特定データを追加し，逆にオブジェクトを有するヒープが削除されるとそのための特定データを除去することは，階層的なツリーの関係を常に維持する上で，当業者にとって自明の事項である。
　してみると，引用発明における子孫であるオブジェクトに対するサブヒープの割当てにおいて，サブヒープ内にオブジェクトを生成し，オブジェクトを特定する情報として周知事項に係る変数を採用するとともに，その際に，前記サブヒープ内にオブジェクトを生成すると特定のための前記変数を集合に追加し，かつ，前記サブヒープを削除すると前記集合から特定のための前記変数を除去するようにすること，すなわち，相違点１及び相違点２に係る構成とすることは，当業者が容易に想到し得たことである。
　よって，相違点１及び相違点２は格別なものではない。
　
（相違点３）について
　本願発明の「前記第１のヒープをクリアする際に，下位層である前記第２のヒープをクリアする処理」との記載は，何らかの処理に伴って当該第１のヒープをクリアするとともに，下位層である第２のヒープをクリアする処理とも，第１のヒープのクリア自体に拠って，先に下位層である第２のヒープをクリアする処理とも，解することができるが，少なくとも本願発明の請求項の記載は前者の如く解される処理を含むものであり，そして引用発明も同様の構成を有することから，この点において本願発明と引用発明との間に実質的な差異は認められない。
　なお，上述における後者の如く解される処理についても，一般に，ヒープが不要となれば当該ヒープを削除することは，ガベッジコレクションの概念に見られるように当業者にとって技術常識であり，引用発明におけるヒープの解放を，オブジェクトの削除に伴わずに行うものとすることに格別の困難性は認められないし，また，引用発明の解放対象であるヒープ及びサブヒープが階層的に管理されているものであり，階層的な関係を反映する階層的なデータを参照することでヒープから解放すべきサブヒープを追跡し得ることを考慮すると，サブヒープのクリアを上位であるヒープのクリアより先に行うように構成することは，引用発明に接した当業者であれば容易に想到し得るものと認められる。
　してみると，引用発明におけるヒープ及びサブヒープの解放について，「第１のヒープをクリアする際に，下位層である前記第２のヒープをクリアする」ようにすること，すなわち，相違点３に係る構成とすることは，当業者が容易に想到し得たことである。
　よって，相違点３は格別なものではない。
　
　上記で検討したごとく，上記相違点１ないし相違点３は格別のものではなく，そして，これらの相違点を総合的に勘案しても，本願発明の奏する作用効果は，上記引用発明及び周知技術等の奏する作用効果から予測される範囲内のものにすぎず，格別顕著なものということはできない。
　
第５　むすび
　
　以上のとおり，本願の請求項１に係る発明は，引用発明，及び周知技術等に基いて，当業者が容易に発明をすることができたものであるから，特許法第２９条第２項の規定により特許を受けることができないものであり，他の請求項についての検討をするまでもなく，本願は拒絶されるべきものである。
　
　よって，結論のとおり審決する。