- PHPがいかに駄目言語であるかをちゃんと説明
666 :デフォルトの名無しさん[sage]:2014/07/06(日) 15:01:09.07 ID:ikMLm2G0 - ところで >>622 のリンク先に一応突っ込んどくと、
gcc で -O3 付けたら、そもそも sumup は一度も呼ばれない。 sumup は副作用のない関数で戻り値が代入される result もローカル変数だろ。 その result は main の後の処理で使われないだろ。 だから gcc の最適化器は main 関数の中にある for 自体を丸ごと全部消す。 printf して終わるだけのバイナリができる。
|
- PHPがいかに駄目言語であるかをちゃんと説明
677 :デフォルトの名無しさん[sage]:2014/07/06(日) 16:58:29.43 ID:ikMLm2G0 - public class heaptest {
public static void main(String[] args) { SimpleObj[] objs = new SimpleObj[100]; for (int i = 0; i < 100; i++) { objs[i] = new SimpleObj(); } try { Thread.sleep(180 * 1000); } catch (Exception e) {} } } class SimpleObj { public int i; } $ javac heaptest.java $ java heaptest & $ jmap -dump:format=b,file=heaptest.hprof <PID> $ jhat heaptest.hprof これで 7000 番にサーバが立つからブラウザで http://localhost:7000 を開いて見ていけば どういうオブジェクトがどれだけメモリを使ってるか分かる。 SimpleObj 1 個で 20 バイト。
|
- PHPがいかに駄目言語であるかをちゃんと説明
679 :デフォルトの名無しさん[sage]:2014/07/06(日) 17:00:18.62 ID:ikMLm2G0 - <PID> のところは ps でプロセス ID を調べて入力する。
動いているプロセスに attach してダンプを取る仕組みだから Thread.sleep で終わらせないようにしているわけ。
|
- PHPがいかに駄目言語であるかをちゃんと説明
681 :デフォルトの名無しさん[sage]:2014/07/06(日) 17:06:01.78 ID:ikMLm2G0 - JVM はオブジェクトの representation については特に仕様で決まってるわけじゃないのか。知らなかった
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.7 20バイトってのは64bit版のOpenJDK1.7調べ
|
- PHPがいかに駄目言語であるかをちゃんと説明
688 :デフォルトの名無しさん[sage]:2014/07/06(日) 17:53:50.20 ID:ikMLm2G0 - ソース追っかけてみたけど、これの oopDesc にある _mark と _metadata が 8*2 で 16 バイト分なのかな。
http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/c7f3d0b4570f/src/share/vm/oops/oop.hpp PHP しか使わないから Java のことは全然わからん。 誰か詳しい人教えてくれ。
|
- PHPがいかに駄目言語であるかをちゃんと説明
693 :デフォルトの名無しさん[sage]:2014/07/06(日) 19:07:44.59 ID:ikMLm2G0 - >>689 >>691
大変参考になりました。感謝します。
|