「Mem」の版間の差分

提供:GizmoLabs - だいたい CAD LISP なサイト
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の3版が非表示)
1行目: 1行目:
{{AutoLISP}}
; 構文
; 構文
: (mem)  
: (mem)  
6行目: 8行目:
: AutoLISP のメモリの現在の状態を表示する。
: AutoLISP のメモリの現在の状態を表示する。
: AutoCADとIJCADで表示内容が異なる。
: AutoCADとIJCADで表示内容が異なる。


; 引数
; 引数
:* なし
:* なし


; 戻り値
; 戻り値
15行目: 19行目:


; サンプル
; サンプル
* AutoCADの場合
<pre class="brush:autolisp;">
  コマンド: (mem)  
; AutoCADの場合
  (mem)  
  ; GC calls: 23; GC run time: 298 ms  
  ; GC calls: 23; GC run time: 298 ms  
  Dynamic memory segments statistic:  
  Dynamic memory segments statistic:  
29行目: 34行目:
  Segment size: 65536, total used: 68, free: 0  
  Segment size: 65536, total used: 68, free: 0  
  nil
  nil
</pre>
   
   
  * この現在の状態のレポートの先頭行には、次の情報が表示される。
  * この現在の状態のレポートの先頭行には、次の情報が表示される。
  GC calls    : AutoLISP が起動されてからのガベージ コレクション呼び出しの数
  GC calls    : LISP が起動されてからのガベージ コレクション呼び出しの数
  GC run time : ガベージ コレクションに要した時間の合計(ミリ秒)
  GC run time : ガベージ コレクションに要した時間の合計(ミリ秒)
   
   
61行目: 67行目:
   AutoLISP Dynamic Memory(DM)サブシステムが要求したもののみをリストしている。
   AutoLISP Dynamic Memory(DM)サブシステムが要求したもののみをリストしている。
   AutoLISP のクラスは、メモリの割り当てに DM を使用しない。
   AutoLISP のクラスは、メモリの割り当てに DM を使用しない。
* BricsCADの場合
<pre class="brush:autolisp;">
(mem)
GC calls Total  36 [0.48 secs.]  (36 in all docs)                              ; LISP が起動されてからのガベージ コレクション呼び出しの数
GC calls System 0, Int 0, Real 0, Vector 0, Strg 0, Symbol 0, Cons 28, Heap 8  ; ベージ コレクションの内容
VM total memory : 304.000 MB
VM Page  memory : 182.402 MB available,  30.281 MB used (16 %)
VM Heap  memory : 121.598 MB available,  1.209 MB used (0 %)
</pre>




* IJCADの場合
* IJCADの場合
(mem)
<pre class="brush:autolisp;">
(mem)
  Nodes: 33934      <- LISPに割り当てられたノード数の合計。
  Nodes: 33934      <- LISPに割り当てられたノード数の合計。
  Free nodes: 1744  <- ガーベージコレクションで解放されたノードの数。
  Free nodes: 1744  <- ガーベージコレクションで解放されたノードの数。
70行目: 90行目:
  Allocate: 514      <- セグメントのサイズ。
  Allocate: 514      <- セグメントのサイズ。
  Collections: 24    <- ガーベージコレクションの数。
  Collections: 24    <- ガーベージコレクションの数。
* IJCADの場合、1ノードは12バイト。セグメントのデフォルトサイズは514ノード。 [[alloc]] 関数を使用して、セグメントのサイズを変更でき、[[expand]] 関数を使用して、セグメントの数を変更できる。
</pre>
 
* IJCADの場合、1ノードは12バイト。セグメントのデフォルトサイズは514ノード。 [[alloc]] 関数を使用してセグメントのサイズを変更でき、[[expand]] 関数を使用してセグメントの数を変更できる。





2024年11月6日 (水) 05:30時点における最新版

構文
(mem)


機能
AutoLISP のメモリの現在の状態を表示する。
AutoCADとIJCADで表示内容が異なる。


引数
  • なし


戻り値
nil


サンプル
; AutoCADの場合
 (mem) 
 ; GC calls: 23; GC run time: 298 ms 
 Dynamic memory segments statistic: 
 PgSz Used Free FMCL Segs Type 
  512 79 48 48 1 lisp stacks 
  256 3706 423 142 16 bytecode area 
 4096 320 10 10 22 CONS memory 
   32 769 1213 1089 1 ::new 
 4096 168 12 10 12 DM Str 
 4096 222 4 4 15 DMxx memory 
  128 4 507 507 1 bstack body 
 Segment size: 65536, total used: 68, free: 0 
 nil
* この現在の状態のレポートの先頭行には、次の情報が表示される。
GC calls    : LISP が起動されてからのガベージ コレクション呼び出しの数
GC run time : ガベージ コレクションに要した時間の合計(ミリ秒)

LISP オブジェクトは、動的(ヒープ)メモリに割り当てられる。
動的(ヒープ)メモリはセグメントに編成され、ページに分割されている。
メモリの詳細は、「Dynamic memory segments statistic:」というタイトルの下に表示される。
PgSz : 動的メモリのページ サイズ(キロバイト)
Used : 使用されているページの数
Free : 未使用の(空の)ページの数
FMCL : 未使用ページの最大連続領域
Segs : 割り当てられているセグメントの数
Type : このセグメントに割り当てられたオブジェクトの種類。 
       これには、次のものがある。
       lisp        : stacks—LISP の内部スタック
       bytecode    : area—コンパイルされた関数モジュール コード
       CONS        : メモリ—CONS オブジェクト
       ::new       : タイプが不明なメモリ要求には、このセグメントが使用される
       DM Str      : 動的文字列の本体
       DMxx memory : その他の LISP ノード
       bstack body : 入出力処理に使用される内部構造体

レポートの最後の行には、最小セグメント サイズと、割り当てられているセグメントの数が表示される。
メモリ要求に対するシステム コールを節約するために、AutoLISP は 3 つの未使用セグメントのみの
リストを保持する。
すべてのヒープ メモリはグローバルである。つまり、すべての AutoCAD ドキュメントは、
同じヒープを共有している。これは、AutoCAD の将来のバージョンで変更される可能性もある。 

* mem 関数は、オペレーティング システムから要求されたすべてのメモリをリストするわけではなく、
  AutoLISP Dynamic Memory(DM)サブシステムが要求したもののみをリストしている。
  AutoLISP のクラスは、メモリの割り当てに DM を使用しない。


  • BricsCADの場合
(mem)

GC calls Total  36 [0.48 secs.]  (36 in all docs)                              ; LISP が起動されてからのガベージ コレクション呼び出しの数
GC calls System 0, Int 0, Real 0, Vector 0, Strg 0, Symbol 0, Cons 28, Heap 8  ; ベージ コレクションの内容

VM total memory : 304.000 MB 
VM Page  memory : 182.402 MB available,  30.281 MB used (16 %)
VM Heap  memory : 121.598 MB available,   1.209 MB used (0 %)


  • IJCADの場合
(mem)
 Nodes: 33934       <- LISPに割り当てられたノード数の合計。
 Free nodes: 1744   <- ガーベージコレクションで解放されたノードの数。
 Segments: 40       <- 割り当てられたセグメントの数。
 Allocate: 514      <- セグメントのサイズ。
 Collections: 24    <- ガーベージコレクションの数。
  • IJCADの場合、1ノードは12バイト。セグメントのデフォルトサイズは514ノード。 alloc 関数を使用してセグメントのサイズを変更でき、expand 関数を使用してセグメントの数を変更できる。



関連事項