私は、Cで書かれた単純なスタックマシンで、ほとんどの場合学習のために取り組んでいます。私のメモリ操作にmalloc/free
を使用した後、私は現代の仮想マシンからメモリ割り当ての特定のコードを読み込むことをお勧めします。最新のVMはどのようにメモリ割り当てを処理しますか?
私はLuaのソースコードをダウンロードして読み始めました。しばらくすると、マクロがたくさん含まれていることがわかりました。実際のメモリ割り当てが行われたコードは見つかりませんでした(つまり、malloc
呼び出し)。
find . -exec grep -i "malloc" '{}' \; -print
名前にmalloc
という単語を持つLuaマクロしか印刷されませんでした。 Lua VM(およびプログラミング言語)はmalloc
をまったく使用しません!
これは私には、現代のVMはどのようにしてメモリ割り当てを処理するのかという質問につながります。 Luaはヒープからどのようにメモリを割り当てますか? malloc
以外の割り当て方法はありますか?他の方法の賛否両論は何ですか?
割り当てられたメモリに安全に取り組むためのベストプラクティス、デザインパターンなどについても不思議です。私は、Luaのソースで、メモリを割り当てる前に多くの間接参照があることを知っています。このことについてどこで知ることができますか?
どのような種類のVMに興味がありますか?コンピュータ全体を仮想化するVMがあります。それらについても尋ねていますか? –
@AlexeyFrunze、いいえ、私はプログラミング言語に使用されていたVMに興味があります。 – sinan
OK、タイトルが混乱しています。 –