アカウント名:
パスワード:
ここ数年にわたり、PCにおける一般的な搭載メモリ量が2GB~4GB程度で十分、それ以上は各種コンテンツ編集やビルド作業、仮想マシン起動などの重たい作業をしない限りは不要というのが続いていますね
スマホOSにおいては、フラッシュメモリをストレージにする前提からメモリが足りなくなったときにスワップアウトはさせずアプリをステートセーブして終了させる + 次回はステートロードしつつ起動させるという実装になっている点が異なりますが、これが大きく影響するのは
「重たいゲームを複数同時に起動し、さらに裏でゲームが終了していることも許さない」
状況だけ
> iPhoneにおいてはこのような利用ケースごとのメモリ要求量のバラつきはとても困った要素になりますね> ラインナップが少ないということは自由が少ないということ、まさにその通りになります
毎度毎度、なんかAppleを貶さないと気が済まないみたいだがw、違うOSでメモリの量を比べても意味があるまい。iOSのメモリ利用効率はAndroidよりはるかに良い [cultofmac.com]ので、もともとそんなにメモリが要らないという話だよ。
Androidはそもそもの成り立ちがLinuxの上にJava乗っけてという変態構造の上に、JITが走ったり、GCが走ったりと裏でやってることが多く、メモリとプロセッサパワー食いな体質のOSだ。
Linuxの上にJavaって別に変態とは言えないでしょう。携帯Javaとかも基本そんな構成ですよ。ちなみにAndroidは今はAOTですし。
リンク先の記事ではAndroidはGCがあるのでメモリがたくさんいると書いてありますが、要はメモリが多めだと開放するまでに時間が稼げるという話であって二倍の内容が保存できるという話ではありません。そんな魔法の技術はありません。そしてGCが働くために必要な余計なメモリなんてギガバイト単位の話ではありません。なにしろ(Java用の)メモリ2MBとかでも機能していたのですよ?加えてJavaではGCがあるというなら、ネイティブならメモリリークがあります。プログラマーが努力すればメモリ効率は上げられますが、Javaでもこまめにメモリを開放すれば同じことができます。
リンク先の記事を読みましたか?まずサイト名がCult of Macです。2014年の記事です。文体もGCを理解していないし、かなり砕けた口調で、iPhoneのメモリが少ないことを正当化する文脈です。話になりません。
4GBのメモリに何が詰まっているか考えたことはありますか。まさか4GBもの空間のほとんどどこをとっても機械語が並んでいると思ってはいませんか。実際には展開した画像、UI描画結果、ファイルキャッシュ、3Dモデル、ステージデータその他諸々の比較的大きなファイルが殆どのはずです。それらは比較的粒度が大きくGCによる負担は問題になりません。小さなアプリにおいては仮にその議論に意味があったとしても4GBという空間からすれば大した影響はありません。
携帯Javaとかも基本そんな構成ですよ。
それはアプリの実行環境としてJavaVMが載っているという話だろう。Androidの場合はアプリ実行とは関わらない、OSそのものの機能の多くがJavaで書かれていて、Linuxの上で動くVMの上で動いている。そんなのは他ではあまり見かけないが。
加えてJavaではGCがあるというなら、ネイティブならメモリリークがあります。プログラマーが努力すればメモリ効率は上げられますが、Javaでもこまめにメモリを開放すれば同じことができます。
いや、プログラマの技量の落ち度や、「努力すればできる」みたいな話まで持ちこんでくるのはちょっと違うんじゃないかなw
将来的な互換性を重視する実装では最初から仮想マシンをかましているのはそこそこあるXBOX ONE とかもそんなん
それ、最近のXBox Oneになってから出てきた話だろうにwしかもXBoxの場合は、仮想マシンの上で動くのは丸ごと完全なOSだ。AndroidみたいにOSの機能の半分はLinux、半分はJavaVMの方で動いているというのは、やはり変態的だ。
なんか話が変わってない?Java仮想マシンみたいなのと仮想マシン上でOSが走ってるってのは全然別よ。でも初めて知ったから驚いた。凄いな。Windows 10でHyper-Vを有効にすると目の前のWindows 10までなんだか知らん内に仮想化されるようなもんか。
まぁ他なんてそんなにないですけど、WndowsのUWPやWPFなら結構.NET Frameworkですよね。確かに今でもネイティブで書かれている部分が多いですけど、Androidも下層はそれなりにネイティブですよ。多分。ちょっとやり過ぎかとは思いますが変態ってのは言いすぎかと。
言いたかったのはそういう話じゃなくて、
Linuxの上にJava乗っけてという変態構造
という表現が変で、Linuxの上に乗っけないならどうするの?という違和感ということです。
プログラマの技量の落ち度や
JavaアプリのAPIとして選ぶんじゃなくて、ネイティブなアプリが動くようにすればよかったんでねーの?Oracleと喧嘩しなくて済んだしさw
> ちなみにAndroidは今はAOTですし。
うんにゃ、NougatからまたJITに戻ったよ。OSのセキュリティーアップデートかけるたびに、全部アプリをリコンパイルしなおすんで、えらく時間がかかって不評だったから。
JITに戻ったのではなくAOTとのハイブリッドだよ
ttps://www.infoq.com/jp/news/2016/04/android-n-aot-jit
ハイブリッドと言うことは、やはりアプリの実行中に裏で動いている部分があるということではないかね?
> ハイブリッドと言うことは、やはりアプリの実行中に裏で動いている部分があるということではないかね?
記事読めよ
「後でデバイスがアイドル状態で充電中のとき」
と明記されてる
記事を読むのは君の方だ。アプリの実行中に裏でプロファイラがアプリの実行状態を解析して記録していることが書かれているだろうに。
> 記事を読むのは君の方だ。
お前が話の流れも無視して顔真っ赤にしてAndroid叩きしたがってるだけだ
#3270597 を見ればわかるとおり、今話の焦点なのはJIT/AOT「コンパイル」の部分だ
そしてこれはAndroid Nにおいてもアプリの実行中には基本的には発生しない(アプリインストール直後、AOTコンパイルが終わってない間に即アプリを起動して使っている状況のみ除く)
自分の間違いを指摘されたからって勝手に話を広げて逃げようとすんなよ見苦しいんだよ
ハイブリッドと言うことをうけて、JITコンパイラでなくとも
> やはりアプリの実行中に裏で動いている部分がある
と言う話をしているんだよ。そもそも、アプリの実行の裏で色々仕事をしているからメモリを食うと言う話が始まりなのに。
> なるほど、アプリの実行中にアプリのクラッシュなどを判断する処理が動いているiOSは最低ということだね
それはAndroidだって動いているだろうにw
>それはAndroidだって動いているだろうにwあたりまえ。そんなあたりまえの機能と同程度の負荷かもしれないのに、> やはりアプリの実行中に裏で動いている部分があること自体を問題視した発言だったから、#3270666 みたいな書き方したんじゃないかね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
実際のところでいえば (スコア:0)
ここ数年にわたり、
PCにおける一般的な搭載メモリ量が2GB~4GB程度で十分、
それ以上は各種コンテンツ編集やビルド作業、仮想マシン起動などの重たい作業をしない限りは不要というのが続いていますね
スマホOSにおいては、フラッシュメモリをストレージにする前提から
メモリが足りなくなったときにスワップアウトはさせず
アプリをステートセーブして終了させる + 次回はステートロードしつつ起動させる
という実装になっている点が異なりますが、
これが大きく影響するのは
「重たいゲームを複数同時に起動し、さらに裏でゲームが終了していることも許さない」
状況だけ
Re: (スコア:1)
> iPhoneにおいてはこのような利用ケースごとのメモリ要求量のバラつきはとても困った要素になりますね
> ラインナップが少ないということは自由が少ないということ、まさにその通りになります
毎度毎度、なんかAppleを貶さないと気が済まないみたいだがw、違うOSでメモリの量を比べても意味があるまい。
iOSのメモリ利用効率はAndroidよりはるかに良い [cultofmac.com]ので、
もともとそんなにメモリが要らないという話だよ。
Androidはそもそもの成り立ちがLinuxの上にJava乗っけてという変態構造の上に、
JITが走ったり、GCが走ったりと裏でやってることが多く、メモリとプロセッサパワー食いな体質のOSだ。
Re:実際のところでいえば (スコア:0)
Linuxの上にJavaって別に変態とは言えないでしょう。
携帯Javaとかも基本そんな構成ですよ。
ちなみにAndroidは今はAOTですし。
リンク先の記事ではAndroidはGCがあるのでメモリがたくさんいると書いてありますが、要はメモリが多めだと開放するまでに時間が稼げるという話であって二倍の内容が保存できるという話ではありません。そんな魔法の技術はありません。
そしてGCが働くために必要な余計なメモリなんてギガバイト単位の話ではありません。
なにしろ(Java用の)メモリ2MBとかでも機能していたのですよ?
加えてJavaではGCがあるというなら、ネイティブならメモリリークがあります。
プログラマーが努力すればメモリ効率は上げられますが、Javaでもこまめにメモリを開放すれば同じことができます。
リンク先の記事を読みましたか?
まずサイト名がCult of Macです。2014年の記事です。
文体もGCを理解していないし、かなり砕けた口調で、iPhoneのメモリが少ないことを正当化する文脈です。
話になりません。
4GBのメモリに何が詰まっているか考えたことはありますか。
まさか4GBもの空間のほとんどどこをとっても機械語が並んでいると思ってはいませんか。
実際には展開した画像、UI描画結果、ファイルキャッシュ、3Dモデル、ステージデータその他諸々の比較的大きなファイルが殆どのはずです。
それらは比較的粒度が大きくGCによる負担は問題になりません。
小さなアプリにおいては仮にその議論に意味があったとしても4GBという空間からすれば大した影響はありません。
Re:実際のところでいえば (スコア:1)
携帯Javaとかも基本そんな構成ですよ。
それはアプリの実行環境としてJavaVMが載っているという話だろう。
Androidの場合はアプリ実行とは関わらない、OSそのものの機能の多くがJavaで書かれていて、
Linuxの上で動くVMの上で動いている。そんなのは他ではあまり見かけないが。
加えてJavaではGCがあるというなら、ネイティブならメモリリークがあります。
プログラマーが努力すればメモリ効率は上げられますが、Javaでもこまめにメモリを開放すれば同じことができます。
いや、プログラマの技量の落ち度や、「努力すればできる」みたいな話まで持ちこんでくるのはちょっと違うんじゃないかなw
Re: (スコア:0)
将来的な互換性を重視する実装では最初から仮想マシンをかましているのはそこそこある
XBOX ONE とかもそんなん
Re: (スコア:0)
それ、最近のXBox Oneになってから出てきた話だろうにw
しかもXBoxの場合は、仮想マシンの上で動くのは丸ごと完全なOSだ。
AndroidみたいにOSの機能の半分はLinux、半分はJavaVMの方で動いているというのは、やはり変態的だ。
Re: (スコア:0)
なんか話が変わってない?
Java仮想マシンみたいなのと仮想マシン上でOSが走ってるってのは全然別よ。
でも初めて知ったから驚いた。凄いな。
Windows 10でHyper-Vを有効にすると目の前のWindows 10までなんだか知らん内に仮想化されるようなもんか。
Re: (スコア:0)
まぁ他なんてそんなにないですけど、WndowsのUWPやWPFなら結構.NET Frameworkですよね。
確かに今でもネイティブで書かれている部分が多いですけど、Androidも下層はそれなりにネイティブですよ。多分。
ちょっとやり過ぎかとは思いますが変態ってのは言いすぎかと。
言いたかったのはそういう話じゃなくて、
Linuxの上にJava乗っけてという変態構造
という表現が変で、Linuxの上に乗っけないならどうするの?という違和感ということです。
プログラマの技量の落ち度や
Re: (スコア:0)
という表現が変で、Linuxの上に乗っけないならどうするの?という違和感ということです。
JavaアプリのAPIとして選ぶんじゃなくて、ネイティブなアプリが動くようにすればよかったんでねーの?
Oracleと喧嘩しなくて済んだしさw
Re: (スコア:0)
> ちなみにAndroidは今はAOTですし。
うんにゃ、NougatからまたJITに戻ったよ。OSのセキュリティーアップデートかけるたびに、
全部アプリをリコンパイルしなおすんで、えらく時間がかかって不評だったから。
Re: (スコア:0)
JITに戻ったのではなくAOTとのハイブリッドだよ
ttps://www.infoq.com/jp/news/2016/04/android-n-aot-jit
Re: (スコア:0)
ハイブリッドと言うことは、やはりアプリの実行中に裏で動いている部分があるということではないかね?
Re: (スコア:0)
> ハイブリッドと言うことは、やはりアプリの実行中に裏で動いている部分があるということではないかね?
記事読めよ
「後でデバイスがアイドル状態で充電中のとき」
と明記されてる
Re: (スコア:0)
記事を読むのは君の方だ。
アプリの実行中に裏でプロファイラがアプリの実行状態を解析して記録していることが
書かれているだろうに。
Re: (スコア:0)
> 記事を読むのは君の方だ。
お前が話の流れも無視して顔真っ赤にしてAndroid叩きしたがってるだけだ
#3270597 を見ればわかるとおり、今話の焦点なのはJIT/AOT「コンパイル」の部分だ
そしてこれはAndroid Nにおいてもアプリの実行中には基本的には発生しない
(アプリインストール直後、AOTコンパイルが終わってない間に即アプリを起動して使っている状況のみ除く)
自分の間違いを指摘されたからって勝手に話を広げて逃げようとすんなよ
見苦しいんだよ
Re: (スコア:0)
ハイブリッドと言うことをうけて、JITコンパイラでなくとも
> やはりアプリの実行中に裏で動いている部分がある
と言う話をしているんだよ。
そもそも、アプリの実行の裏で色々仕事をしているからメモリを食うと言う話が始まりなのに。
Re: (スコア:0)
> なるほど、アプリの実行中にアプリのクラッシュなどを判断する処理が動いているiOSは最低ということだね
それはAndroidだって動いているだろうにw
Re: (スコア:0)
>それはAndroidだって動いているだろうにw
あたりまえ。
そんなあたりまえの機能と同程度の負荷かもしれないのに、
> やはりアプリの実行中に裏で動いている部分がある
こと自体を問題視した発言だったから、#3270666 みたいな書き方したんじゃないかね。