問題タブ [stack-size]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1019 参照

objective-c - NSThread setStackSize がスレッドのサイズを設定しない

を使用してNSThread、スタック サイズを次のように設定しています。

for のAppleドキュメントに書かれているように-[NSThread setStackSize:]

ディスカッション
スレッドを開始する前に、このメソッドを呼び出す必要があります。スレッドの開始後にスタック サイズを設定すると、属性のサイズ (stackSize メソッドによって反映される) が変更されますが、スレッド用に確保されている実際のページ数には影響しません。

しかし、後でデバッガーでスタック サイズを確認すると、設定した値が得られません。

My question is why does the setStackSize: method exist if it does nothing?

Please let me know where I am wrong, or whether the API for setStackSize: is not of any use?

EDIT: Refer to Answer by @Josh Caswell for this question, i missed the K in 4K , and hence the above code will work fine as under:

EXTENSION OF THIS QUESTION:

Can someone kindly explain as to why Apple gave this method setStackSize, and how and when to use this particular method, because it requires a lot of calculations for the user to calculate as to how many bytes are/will be used.

I want to know its exact purpose in NSThread?

Thanks!

0 投票する
2 に答える
6563 参照

c - C 組み込みシステムのスタックとヒープ サイズ

組み込みシステムで実行中の C プログラムの現在のスタックとヒープ サイズを確認するにはどうすればよいですか? また、組み込みシステムで許可される最大スタック サイズとヒープ サイズを確認するにはどうすればよいですか? ヒープサイズが見つからなくなるまで、サイズを増やして malloc() を線形に呼び出すことを考えましたが、スタックのサイズにもっと興味があります。

私は mbed NXP LPC1768 を使用しており、GitHub で開発された gcc4mbed というオフライン コンパイラを使用しています。

より良いアイデアはありますか?すべてのヘルプは大歓迎です!

0 投票する
2 に答える
4152 参照

c# - コンソールアプリケーションのスタックサイズを変更するにはどうすればよいですか?

重複の可能性:
.NETプログラムのスタックサイズを変更するにはどうすればよいですか?

次のコンソールアプリケーションのスタックサイズを変更したい:

いつnがおおよそです。100,000、深さdfsは約です。100,000で、アプリケーションはをスローしStackOverflowExceptionます。

デフォルトのスタックサイズが1MBであることは知っていますが、変更方法がわかりません。

0 投票する
0 に答える
87 参照

windows-7-x64 - anycpuでビルドすると、stackoverflow例外が発生します

私はそれをすべてマネージコード(C#winformプログラム)でプロジェクトを持っています。私がvs2010でビルドしたとき(.net2.0と.net4.03で試してみました)、x64またはx84でターゲットを設定すると、それらはすべてWin7環境でうまく動作します。ただし、anycpuを使用してビルドすると、win7でstackoverflow例外が発生します。ロジックで大きなスタックを使用します。私は次のことを試しました:1)サイズを400000に設定した新しいスレッドを作成します。2)ビルド後にcorflags xxx.exe / 32BIT-3)editbin xxx.exe / STACK:400000を実行します。

問題はまだあります。助けてください。

前もって感謝します。

0 投票する
1 に答える
409 参照

osx-mountain-lion - スタックサイズを無制限の OS X 10.8 に設定するには?

何か間違っているかどうかはわかりませんが、入力すると

$limit stacksize unlimited

Mountain Lion の端末に次のように表示されます。

-bash: limit: command not found

だから私は試します:

sudo ulimit -s unlimited

どちらも機能しません。ターミナルで無制限のスタックサイズを取得するために何を使用すればよいか教えてください。

0 投票する
2 に答える
4466 参照

c++ - GCC 4.6.2 C ++ Qt、MinGW、Vistaでスタックサイズを設定する

複雑な再帰アルゴリズムを使用しているため、プログラムのスタックサイズを増やしたいのですが、繰り返し書き直すのは非常に面倒です。

GCC C++4.6.2を使用しています。MinGw、VistaでQt .proファイル(GUIフロントエンドにQtを使用しています)を使用してビルドします。

このウェブサイトのアドバイスは以下を使用することです:-

そしてこれをg++リンクフェーズに送信するには:-

しかし、リンカーエラーは次のとおりです。-

g ++:エラー:認識されないオプション'--stack、4194304'

QMAKE_CXXFLAGS + =を使用してオプションをコンパイルフェーズに送信しようとしましたが、g++はまだbarfsです。

barfを実行しない唯一のオプションは、GCCドキュメント(.pdf 4.5.0、p.260)の-fno-stack-limitですが、スタックがオーバーフローします。そのパラグラフで言及されている他のオプション。バーフ。

0 投票する
0 に答える
58 参照

memory - 関数のサイズをオブジェクト ファイル レベルで事前に決定する

サイズを事前に決定する方法、関数は実行中に RAM を消費します。これは、オブジェクト ファイル レベルで検出する必要がありますか? つまり、より明確にするために、オブジェクトファイルがある場合、このファイルはBSS、DS、CS、およびスタックとヒープをこれだけ消費すると言えます。これで、size コマンドと nm コマンドを使用して BSS、DS、および CS を整理できますが、消費されるスタックまたはヒープの量を決定することはできません。

これを手伝ってくれる人はいますか..

前もって感謝し
ます

0 投票する
2 に答える
140 参照

.net - 値型のスタックのサイズ

すべての人が、値型はスタックに格納されていると言っています。しかし、値型が格納されるスタックのサイズはどれくらいですか?誰もそれについて説明しません。

0 投票する
2 に答える
1173 参照

ruby - Ruby のファイバー 4kB スタック サイズの結果

繊維は私にとって比較的新しい概念です。各ファイバーのスタック サイズが 4kB に制限されていることを認識しており、これに「注意」する必要があることを読み続けています。この制限の実際の結果は正確には何ですか?

編集:

結局、この 4kB の制限はそれほど障害にはならないようで、SystemStackError を発生させるにはファイバー自体の内部にかなりの数 (4,045) のローカル変数が必要です。

最も洗練されたコードではありませんが、ファイバーのスタックの限界を示しているようです。戻り値、ローカル変数 (すべてヒープ上のオブジェクトへの参照を含む)、およびメソッド呼び出しだけがスタックに置かれるようです。ファイバーから呼び出されるメソッドのローカル変数などがファイバーのスタックの一部であるかどうかはテストしていません。

編集2:

上記のコードを修正しました。呼び出されたメソッドの変数などは、ファイバーのスタックの一部になるようです。この場合、メソッド自体が変数 (ヒープ上のオブジェクトへの透過的な参照であるように思われる) よりも多くのスペースをスタック上に必要とする可能性が高いため、呼び出しの深さ (再帰がなくても) がより大きな問題になる可能性があります。

次のコードは 4,031 回目の反復で失敗し、呼び出されたメソッドの変数がファイバーのスタックの一部になることを示しています。

編集3:

Rubinius 2.0 で最初のコード例を実行してみました。そのファイバーには 4kB のスタック制限がないように見えますが、約 3,500 回の反復を超えるとますます著しく遅くなり、5,000 回目の反復では平均して 1 秒あたり約 1 回の反復になります。5,100 回を少し超えた時点で実行を終了したため、RBX に制限があるかどうかはわかりません。また、RBX は MRI 1.9.3 の数倍のメモリを使用しています。

JRuby 1.7 では、ファイバーのスタック サイズが 4kB に設定されていないようです。また、ファイバーに最大スタック サイズがあるかどうかは不明です。最初のコード例の 5,000 回の反復を問題なく完了しましたが、予想どおり、JVM は数百 MB の RAM を食い尽くしました。