Java入門・初心者質問スレ Part.9

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/03/09(土) 23:59:15.92ID:ACok0wnJ
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.8
http://mevius.5ch.net/test/read.cgi/tech/1528370228/
2020/03/10(火) 05:36:19.04ID:9vkl8TPx
>>512
IT業務は人手不足って聞いたけどそれでも高齢だと就職難しい?
2020/03/10(火) 05:39:32.76ID:3BlP5Izm
>>513
仕事を選ばなければあることはあるよ
2020/03/10(火) 05:54:32.14ID:9vkl8TPx
>>514
そうですか、挑戦してみてもいいですかね。ありがとうございます
2020/03/10(火) 05:59:35.16ID:3BlP5Izm
>>515
挑戦した方がいいと思うよ
待遇とかは自分の価値観で評価するものだから
2020/03/10(火) 06:08:16.69ID:9vkl8TPx
>>516
なるほど。そうですよね。一度やってみます
518デフォルトの名無しさん
垢版 |
2020/03/10(火) 08:47:54.44ID:kYBXWStN
>>506
ありがとうございます。正常な動作なんですね。安心しました。
2020/03/10(火) 08:57:13.80ID:SOZ0FlFe
代替の回答もせずにケチつけるだけの異常者
2020/03/10(火) 14:14:41.48ID:WfcRHOjd
そんな人はいない、ただレス番が飛んでるだけ
2020/03/10(火) 15:10:36.12ID:WfcRHOjd
>>491
https://www.baeldung.com/java-string-pool#strings-allocated-using-the-constructor

回答間違いっぽくない?

Java7 以前は、StringリテラルがGCされることはなかったけど、
それ以降は、String リテラルは参照がなくなったらGCされる

あと、Java9 以降は、ヒープ上の文字コードもUTF-16だけじゃなくなってるね

一個適当な String リテラル使う Java のプログラム走らせて、参照消したあと System.gc() する
別のプログラムから、JNA経由とかで Kernel32の ReadProcessMemory で Java のメモリ読んで文字列の有無を確認
とかも面白そう

チートエンジンとかでも出来るんかな
2020/03/10(火) 15:17:15.01ID:WfcRHOjd
あと、クラスのアンロードは、クラスローダの参照とインスタンスへの参照が全部なくならないとアンロードされない
システムクラスローダとかからロードしてるクラスの場合、一度読んだクラスはアンロードされない
2020/03/10(火) 16:04:24.33ID:SOZ0FlFe
そういう確認はメモリエディタが便利だね
2020/03/10(火) 18:16:00.38ID:inz7zISD
>>521
クラスがロードされる時に(classファイルの)コンスタントプールから(既存でなければ)生成されるStringインスタンスは、
クラスがそのStringインスタンスへの参照を(実行時コンスタントプールに)保持しているので、
そのクラスが生存している(アンロードされない)限り、
GCで回収の対象にはなりません。
(回収されてしまったら大変)
2020/03/10(火) 19:24:51.92ID:WfcRHOjd
>>524
https://docs.oracle.com/javase/specs/jvms/se11/html/jvms-3.html#jvms-3.4
> Data of types int, long, float, and double, as well as references to instances of class String, are managed using the ldc, ldc_w, and ldc2_w instructions.

[references to instance of class String] って書いてあるし、実体はそこに無いんじゃないの?
String pool の色んな説明見ても、String literal はGCされるって結論づけられてるのがほとんど

Run-time Constant Pool の説明見ても、単なる Symbol Table で、メモリ上の実体がそこにあるわけじゃないように思うんだけど
2020/03/10(火) 19:34:58.74ID:WfcRHOjd
あぁごめん、参照で持ってるからこそプール上の String がGCされないって言ってるのか
2020/03/10(火) 19:49:00.59ID:9vkl8TPx
ここ本当に初心者スレなんですかね・・・
2020/03/10(火) 20:00:32.03ID:WfcRHOjd
https://stackoverflow.com/a/2433076

このコード実行してみて、System.gc() をコメントアウトしたときと比べてみると、やっぱり String Literal って GC されてるんじゃない?
new String してるんだけど、intern してるから、プール上の String が GC されてる証拠って言えるよねこれ
2020/03/10(火) 20:06:45.70ID:WfcRHOjd
なんどもすまん、でも、リテラルで持ってるわけじゃないのかこのプログラム
new String のところを、new String("fkasdjf;lsdkjfasdljfdlkfjadsfjsad;kljfadjfkdas;")
とかってすると、System.gc しても結局全部同じ値返したわ

ということは、ソースコードにリテラル直接書き込むと、クラス自体がアンロードされない限りやっぱりプールにずっと残るんか

うーん、もうちょっといろいろ試してみよう…
2020/03/10(火) 20:36:01.83ID:inz7zISD
>>526
そうです。
>>489が雑すぎました、すみません。
StringリテラルがStringインスタンスとしてロードされるのは自明じゃろ、
からの雑な省略でいい加減過ぎました。

>>527
すみません、乗りかかった舟なので。
でもスレを見返してもらえばわかるようにこんな話題は典型的じゃないですよ。
2020/03/10(火) 20:37:11.37ID:Lvz0sNoZ
基本がわかってないからゴミみたいな駄レスでスレを消費するアホども
いまだにクラスのアンロードとか言ってるしw
スレを荒らすなゴミども
SNSでやれゴミ
2020/03/10(火) 20:40:15.96ID:inz7zISD
>>529
「Stringリテラル」ってのはその
"fkasdjf;lsdkjfasdljfdlkfjadsfjsad;kljfadjfkdas;"
の部分です。
>>528はStringリテラルを持たずにStringインスタンスを生成してintern()して、
intern()されたStringインスタンス(Stringプール入り)でもガベコレされるねっていう例でしょう。

>>529の様にStringリテラルをベースにStringインスタンスをnewすると、
同じ文字列のStringインスタンス(ロード時にintern()されてStringプールに確保されている)がすでに存在するので、
新しいStringインスタンスをintern()した結果はStringリテラルからのインスタンスが返されます。
Stringリテラルのインスタンスはクラスが参照を保持しているのでGCで回収されないので、
何回
new String("fkasdjf;lsdkjfasdljfdlkfjadsfjsad;kljfadjfkdas;").intern()
しても同じインスタンスが得られます。
2020/03/10(火) 20:48:34.87ID:WfcRHOjd
>>532
なるほどです
すみません、同じことを言い直させてしまいましたね

カスタムクラスローダ作って、参照を消してクラスをアンロードするってのが
コード中の文字列リテラルをGCさせられる唯一の方法ってことになるんですかね

ヒアドキュメントがJavaにもそのうち来ますし、
この辺ちょっと気になってたので詳しく調べられて良かったです
ありがとうございました
2020/03/10(火) 20:54:00.05ID:Lvz0sNoZ
3行で説明できることをよくまぁここまでゴミレスの長文合戦できるもんだな
そして最後まで何も理解してないっていう
こんな奴等に正解を教えてやったところで何も成長しないだろう
ほんと酷いね
535デフォルトの名無しさん
垢版 |
2020/03/10(火) 23:24:43.75ID:CTyaWFt8
>>534
3行で説明してみろよ、おん?
2020/03/10(火) 23:41:34.56ID:jsNl1GfH
3行とは言ったが、1行の文字数は指定していない
537デフォルトの名無しさん
垢版 |
2020/03/10(火) 23:48:11.46ID:CTyaWFt8
>>536
なるほど、すみませんでした
2020/03/10(火) 23:53:47.08ID:jsNl1GfH
>>537
ま、いいってことよ
今度から気をつけろよ

特に仕事を請けるときはこういう言葉の罠に気をつけな
539デフォルトの名無しさん
垢版 |
2020/03/10(火) 23:56:27.67ID:CTyaWFt8
何文字になっても良いから3行で説明してみろよ、おん?
2020/03/11(水) 00:25:51.64ID:h5h5BksH


541デフォルトの名無しさん
垢版 |
2020/03/11(水) 00:50:42.16ID:X5iYXCki
>>527
ここはプログラム板で素人がどうこう言うところではない。
542デフォルトの名無しさん
垢版 |
2020/03/11(水) 00:52:58.23ID:wch4nyun
>>527
40代から始めても資格を取ったり意欲的なことしないと誰も相手はしないよ。

あとは経歴の偽装を強要されてどこかの現場に押し込まれる。
2020/03/11(水) 01:09:02.89ID:l8+4vwtz
メモリ領域の区別、classファイル、実態
クラスローダーがこれらをどういう風に割り当てるかっていう基本的なことを理解してれば
上のような意味不明で何も理解してない疑問は出てこないんだよね
何も理解してないのに理解したつもりになってわからないことを背伸びして知ろうとするから
アホみたいな駄文の応酬を繰り広げる
ググれカス
何回も言わせるな
2020/03/11(水) 02:30:08.29ID:KFvIJzGT
未経験からの新人研修中で上司にいびられてストレス発散ってところか多分
自分が言われたことをそのままスレでリピートしてる
クラスのアンロードも知らんようだし、基本的なことも理解してなさそう
2020/03/11(水) 02:33:53.03ID:l8+4vwtz
自分の馬鹿を棚に上げて妄想に逃げるのは勝手だが
間違ったレスを延々と繰り返してスレを荒らすなゴミ
あとクラスのアンロードなんていうものはないアホ
どこでこんな間違った知識拾って来たのか知らんけど
2020/03/11(水) 08:20:08.48ID:1d+VOVWW
完全に理解した人の説明が見てみたいです
(どうせ無理だろうけど)
2020/03/11(水) 09:12:35.75ID:h5h5BksH
ここまで具体的な技術的内容なし
2020/03/11(水) 09:23:46.28ID:NS002VYr
>>542
一応基本情報と応用情報の勉強シテマス
2020/03/11(水) 13:03:22.16ID:KFvIJzGT
>>545
https://docs.oracle.com/javase/specs/jls/se13/html/jls-12.html#jls-12.7
12.7. Unloading of Classes and Interfaces

あれ?偉そうに言っといて、言語仕様も読んだことないんですか?
2020/03/11(水) 16:51:32.97ID:l8+4vwtz
それはGCがクラスを破棄する可能性を示唆することを説明しただけであって
ブートストラップクラスローダーはアンロードしないことを説明してんだよ
自分で貼ったリンクも理解せずにドヤ顔で貼ってどんだけ馬鹿なんだお前
アホ
2020/03/11(水) 17:40:25.14ID:l8+4vwtz
理解してないのに理解したつもり
英語読めないのに英語のドキュメントを貼る
プログラムの勉強始めたばかりの中学生だろうけど
ここはガキの遊び場じゃないからSNSでやれ
アホ
2020/03/11(水) 19:19:10.36ID:g4YF3nHK
>>550
これは恥ずかしい
>>500,507,545で概念自体が存在しないかのような口振りだったのにいざソースを出されると苦しすぎる言い訳だな
2020/03/11(水) 19:32:05.86ID:l8+4vwtz
何言ってんだコイツ?ガチもんの池沼か?
クラスのアンロードなんてねーからキチガイ
こういう風に単語の断片だけ拾って
クラスローダーがさもクラスをアンロードするかのように嘘の説明をして
初心者未満同士で駄文をまき散らしてスレを荒らす
君たちのような池沼用にツイッターとかあるんだからそっちでやろうな
554デフォルトの名無しさん
垢版 |
2020/03/11(水) 19:34:40.59ID:5Fe0YPz5
荒らしを喜ばせると過疎ってしまうぞ
2020/03/11(水) 20:24:04.80ID:+i7jOaKz
仕様に思いっきりそのままの言葉で載ってるものを存在しないよばわり
さすがに言い訳が見苦しすぎる
3連投とかどんだけ悔しかったんだよ
2020/03/11(水) 20:28:44.05ID:l8+4vwtz
お前が見苦しすぎてこっちがこっぱずかしいわキチガイ
おまえが取り上げてるのは単語だけだアホ
今まで散々間違った説明したあげく自分で何も理解してないリンク貼って
今度は開き直ってるし
ここはおまえのようなキチガイが居て良い場所ではない
何回でも言うが「クラスのアンロードなんてものはない」
即刻立ち去れゴミ
2020/03/11(水) 20:30:29.14ID:yIZJThZp
どっちの言い分が正しいのか?
http://www.nminoru.jp/~nminoru/java/class_unloading.html
2020/03/11(水) 20:34:08.40ID:l8+4vwtz
そもそも間違い指摘してやって開き直るとか
どんだけキチガイなんだこいつ
そんでゴミ同士で間違ったレスの応酬ずっとしてんのなw
逝って良し
アホ
2020/03/11(水) 20:34:54.65ID:uSPbkipe
連続レスも、返信ないのに1時間、2時間と時間空いててどんだけイライラしてるか伝わってくるようだな
その上批判的なレスがあったら即レス
他にすること無いんかお前、さすがにもう少し時間有意義に使った方がいいぞ
2020/03/11(水) 20:39:07.63ID:l8+4vwtz
イライラがどうとか言い訳とか話題逸らしして逃げるのは勝手だけど
だらだらと負け犬の遠吠えのごとく駄文レスつけてないで
自分の頭の悪さがわかったらとっととSNSにでも帰れよキチガイ初心者未満は
2020/03/11(水) 20:46:38.85ID:+i7jOaKz
> GCがクラスを破棄する可能性
それがクラスのアンロードそのものでは
仕様にもそう書いてある
それを存在しないって言っといてブートストラップクラスローダはアンロードしないとか無理筋すぎる
2020/03/11(水) 21:04:31.15ID:l8+4vwtz
可能性の話だし永続領域に読込まれたクラスが破棄されるなんてことがあったら
javaプログラム自体が破綻する
つまりアンロードなんてない
そんなことも理解してないのにさもクラスがアンロードされるみたいな風に書いてるから馬鹿にされるんだよ
何回同じレスさせるんだろうこのチンパン君は
2020/03/11(水) 21:05:03.00ID:GZ2m78N1
間違いを指摘してやって〜とか言ってるけど、この人わめき散らすだけで何一つ技術的な指摘はしてないよね
唯一したのが、「クラスのアンロードなんていうものはない」という間違った指摘
技術的な話なしで煽ってるだけなのに知識の浅さ露呈するとか天才かよ
2020/03/11(水) 21:08:30.98ID:l8+4vwtz
っつーかおまえ自分で貼ったリンク読めないのに何言ってんの感じなんだけど
モンスター初心者にもほどがあるわ
アンロードしないっておもいっきり書いてんだよアホ
英語読めないのにカッコつけて「仕様に書いてる!(キリッ」 じゃねーよアホ
頭逝かれてすぎだろキチガイ
2020/03/11(水) 21:12:44.79ID:1Fzb6hin
傍観してたけど、この人って前からずっとスレにいるの?
ググれカスさんが居座るようならさすがに誰にとっても得がないので、ワッチョイかIPスレ建てるしかないのでは
2020/03/11(水) 21:23:53.32ID:l8+4vwtz
やんわりと間違い指摘してやっても逆ギレして噛みついてくるんだからどうしようもないやん
さらには間違いを間違いと認めずこっちが間違ってるかのようなレスつけて
言い訳がーとかイライラガーとか言ってくるんだから手に負えない
自分で持ち出したリンクの中身すら読んでないまたは読めない
もう病気だと思うけどねこの手の初心者は
2020/03/11(水) 23:00:34.82ID:X+Diq7DJ
病気なのは誰がどう見てもお前
2020/03/11(水) 23:11:29.92ID:l8+4vwtz
なんでこう基本すらわかってない奴が背伸びして
全く理解できないドキュメント読んだり引っ張ってくるかね
頭大丈夫?
2020/03/11(水) 23:16:19.54ID:uSPbkipe
こういうプライドだけ異様に高くて、自分の間違いを絶対認めないやつって仕事でマジで使えない
まともに仕事できてたら一日中スレにはりついて顔真っ赤にしてないだろうけど
2020/03/11(水) 23:24:58.32ID:l8+4vwtz
言葉尻捕まえて「間違いを認めないキチガイ!(ムキッー」 論法は
小学校までしか通用しないからとっとと消えろゴミ
ガキみたいな己の気分で善意の指摘すら受け入れられないなら
こういうスレを使うなよ精子年齢小学生君
2020/03/11(水) 23:31:47.50ID:4Eq9dZHE
初心者相手にならイキれると思ってる中級者未満のヤツを怒涛の袋叩きで成敗するお前ら好き
2020/03/11(水) 23:39:34.78ID:l8+4vwtz
最初は「クラスのアンロード!」って騒いでたのに
今じゃ完全に人格攻撃にシフトしてるところ見ると
クラスのアンロードなんてないことがやっと理解できたのかな
まともな奴なら開き直る前に「ありがとうございました」って言うもんだけどね
馬鹿同士では間違ったレスし合いながら「そうなんですね!(キリッ」とかマヌケなやりとりしてるくせにw
最初NGだなんだ言ってたくせに図星突かれて人格攻撃するしかなくなったんだろうけど
アホ
2020/03/11(水) 23:45:46.23ID:l8+4vwtz
ほんと開き直りと人格攻撃はまさにチョンそのものだな
まぁどうせ在日だろうけど
2020/03/11(水) 23:59:45.72ID:KFvIJzGT
めっちゃスレ伸びてると思ったらこれはひどい
元のアンロードに関する言い分も滅茶苦茶だし、人格攻撃批判した直後に程度の低い人種差別発言とか笑えないよ
そもそもゴミだのカスだのお前が言いまくってたからこういう流れになったのが分からんのか
2020/03/12(木) 00:12:20.35ID:+D7NJFy7
お前が滅茶苦茶だよキチガイw
アンロードっていう題目ついてる英語のドキュメント持ってくれば論破できると思ったのか?w
英語も読めねーくせに背伸びしてこっぱずかしいったらありゃしない
アンロードがあるならどういうタイミングでアンロードされるか正確に言ってみ?ん?
どうした?ほれ?
もう言い返す材料ないからどうせまた人格攻撃だろ?w
アホ
2020/03/12(木) 00:13:08.52ID:BBoIJ5CA
どっちの言い分が正しいのか?
http://www.nminoru.jp/~nminoru/java/class_unloading.html
2020/03/12(木) 00:18:07.32ID:+D7NJFy7
そこのリンクにも日本でちゃんと正解書いとるやんw
>またブーストラップクラスローダーは Java VM が存在する限り消滅することはない。
>そのためブーストラップクラスローダーによって読み込まれたクラスは決してアンロードされない。

馬鹿でも日本語なら読めるだろ?ん?
578デフォルトの名無しさん
垢版 |
2020/03/12(木) 00:19:56.90ID:nYYWM61M
>>575
話が噛み合ってないだけだよ
議論を整理しよう
君はどういう考えかな? 3行で説明してみろ、おん?
2020/03/12(木) 00:31:58.00ID:+D7NJFy7
日本語すら理解できない文盲はとりあえず帰れ
当事者はダンマリかもう人格攻撃以外してこないと思うけど
580デフォルトの名無しさん
垢版 |
2020/03/12(木) 00:33:54.85ID:nYYWM61M
のび太さんのエッチ
2020/03/12(木) 00:38:17.40ID:Da/BNhlW
>>522 にも、>>576 のリンクにも、そして仕様にも、クラスのアンロードの条件は書いてある
それ以外に何が必要なのか全く理解できない

ブートストラップクラスローダがアンロードしないからなんなんだ
だからって仕様に書いてあるクラスのアンロードがなくなるわけでもないし、
実際に多くのフレームワークはクラスローダを多数持ってて、アンロードも行えるようになってる

例えば OSGi では bundle を uninstall する際にクラスローダの参照消してる

Java class unload で検索すれば山程例も出てくるのに、いつまでお前はその苦しい主張を続ける気なんだ
2020/03/12(木) 00:40:41.54ID:6A84lKNn
3行でまとめられないなんて、なんて頭がわるいんでしょう(驚)
2020/03/12(木) 00:48:50.84ID:+D7NJFy7
しつこいキチガイだね
今度はフレームワークのクラスローダーかw
アホ

今までの流れ読めるか?ん?キチガイ
またおまえの馬鹿レスに対して突っ込み必要か?ん?
どうだ?
糞アホ
2020/03/12(木) 00:54:55.73ID:+D7NJFy7
馬鹿「自前でクラスローダー作った!これはクラスのアンロードもできる!」

お前の言ってることはこれと同じなんだよね
フレームワークに話逸らせば論破できると思ったアホなんだろうけどw
アホ
2020/03/12(木) 00:55:57.13ID:I+ukoisu
技術的な反論が出来なくてキチガイ、アホ、馬鹿を繰り返すだけ
人には激しく攻撃的なくせに自分が人格攻撃されたら喚く
3行で説明できると豪語しておきながら、一切する気配なし
これまでずっと人の回答にケチつけるだけで、何がどう具体的に違っているのかを一切書かない
自分が間違えても間違いは一切認めない

先生、診断をお願いします
2020/03/12(木) 01:00:53.77ID:+D7NJFy7
>ブートストラップクラスローダがアンロードしないからなんなんだ

これだけでこいつが馬鹿丸出しっていうことも自分で理解してないんだよね
今までのレスの流れとブートストラップクラスローダーが何を読み込んでるのか理解してれば
このアホレスといきなりフレームワークのクラスローダーに話がぶっ飛ぶことなんてないんだから
いい加減馬鹿は消えてくれないか?さすがに中身0の馬鹿の相手するも疲れてきたからさ
アホ
2020/03/12(木) 01:03:32.29ID:+D7NJFy7
絶対的な正解を教えないのはこういう馬鹿を炙り出すためでもあるんだよね
基本が全く理解できてないから少し濁せば意味不明な反論しだすから面白いし
アホ
2020/03/12(木) 01:10:56.52ID:4STg88ql
>>585
この業界病んでる人多いけど、こいつは本気で病院行ったほうが良いと思う
こんなところで、中身のないあおり文句言い続けるのはやめとけ
寂しかったり苦しかったりしたら、迷惑かける撒き散らし方せずに、ちゃんと周りの人間に相談しろ
人格攻撃とかじゃないよ、ちゃんとしとけ
技術的な内容のある話するならまだいいが、中身0で暴言だけ吐かれても、回答者も質問者もただただ不快になるだけ
2020/03/12(木) 01:15:56.06ID:+D7NJFy7
文盲と人格攻撃はもう飽きたからいいよ
あと1時間以内にちゃんとした反論できなければ俺の勝ちな
まぁ元々クラスのアンロードなんてないから上のアホみたいに
屁理屈以外では反論のしようがないんだけどな
明日までに己がなんでここまで理解力がない馬鹿なのかをじっくり考えてこい
アホ
2020/03/12(木) 01:16:37.64ID:wBVWIZ97
>>588
親身で草だけど、そういう正論が通じないからこその病気なんだ
2020/03/12(木) 01:18:11.11ID:+D7NJFy7
別にお得意のNG宣言してスルーでも良かったんだぞ?
馬鹿にされて火病起こしちゃって後に引けなくなっただけだろうけど
2020/03/12(木) 01:21:28.18ID:+D7NJFy7
俺は別にID変えて人格攻撃とか自演とか一切しないしね
単発IDしかいないのも小物すぎて笑えるけどw
必死に集団で批判してるように見せたいんだろうけどw
アホの心理って全てが透けて見えるんだよね
すぐ人格攻撃に走るような性根の腐ったガキみたいなメンタルだから何一つ理解できないんだよ
アホ
2020/03/12(木) 01:27:18.33ID:D6mqj2ka
こんなスレで日付変わってから速攻でID真っ赤にするようなやつお前くらいしかいいないってだけだろ
どこの荒らしもそうだけど必ず自演がどうのとか言い出すよな防衛機制なのかただの病気なのか
2020/03/12(木) 01:42:29.40ID:+D7NJFy7
流れまとめるとこんな感じか

・英語のドキュメント持ってきて 「アンロードって書いてる!(キリッ」
 →実際はクラスローダーがアンロードするなんてことは全く書いてない

・「言い訳するな!(ムキッー」
 →言い訳じゃないことを丁寧に説明

・ドキュメント引っ張ってきた本人は消えて単発で大量に人格攻撃する者が現れる
 →人格攻撃を丁寧に諭す

・別の単発が全く関係のないフレームワークのクラスローダーガーとか詭弁を言い出す
 →丁寧に屁理屈であることを教える

・また単発で人格攻撃が始まる



今日はちゃんと薬飲んで寝ろよキチガイ君
2020/03/12(木) 02:29:26.62ID:yVQIWR3t
なんでこんなヤバい人住み着いてしまったん?
2020/03/12(木) 09:08:26.78ID:pKHsuSIn
真っ赤君は
・過去に誰かに言われた言葉を今発散しようとぶつけてる
・自分の発言がブーメランになってる(自己投影)
ってネタをやってるんかな
2020/03/12(木) 09:10:28.68ID:ivrHn6P3
IT業界ってバカみたいなプログラム書いてたら怒られるん?
2020/03/12(木) 10:05:11.04ID:cajL7pgu
「〇〇に言われたことを言っている!(キリッ」 とか
「ブーメラン!(キリッ」 「自己投影(キリッ」 とか好きだねぇアホは
単純に何もわかってない馬鹿だから指摘してやってるのに
そんなに指摘されたことが誰かの受け売りに見えるほど難しいのかね馬鹿的には
それとも図星過ぎて妄想しないとやってられない的な?ん?そうなんか?
もうアンロードなんてないってことで解決したんだから
礼の一つも言えないならおとなしく消えろよゴミ
負け犬の遠吠えのごとくグダグダグダグダと気色悪いね
アホ
2020/03/12(木) 18:53:25.43ID:pKHsuSIn
図星過ぎて長文になる真っ赤君
2020/03/12(木) 19:50:29.41ID:yVQIWR3t
CheatEngine 使ってメモリ検索してみました

ローカルにString リテラルを宣言してスリープするだけのプログラムで、若いアドレスに3つ、比較的後ろの方のアドレスに2つ その文字列がヒットします
なぜメモリに5つ文字列出来上がるのか分かりません

若いアドレスの3つは多分ヒープで、gc すると1つだけ残って2つ消える
String を new するだけなんですが、途中過程でヒープに2個ゴミが出来るんでしょうか

後ろの方のアドレスの2つは、コード中に文字列リテラルを書かなければ出来ない(char 配列から new String した場合は出来ない)
こっちも gc すると 1つ になります
Run-time Constant Pool には参照しか保持されてないとすると、これは何でしょう?

まとめますと、
String リテラルを宣言すると、gc後、「ヒープ」と「ヒープとは別の場所」に1個ずつ文字列のメモリ実体がある
char配列から new String すると、gc後、「ヒープ」に1個だけメモリ実体がある

リテラルで書くとヒープ(String内のプール)とは別の場所にもう一個メモリ実体ができるようですが、これは何でしょうか…?
2020/03/12(木) 19:51:45.52ID:yVQIWR3t
---A---

{
String literal = "JavaNyuumon"
}

---B---

{
char[] chars = new char[] {'J', 'a', 'v', 'a', 'N', 'y', 'u', 'u', 'm', 'o', 'n'};
String litral = new String(chars);
}

---

この後スリープするだけのプログラムです(sleep に gc 挟んで試したり試さなかったり)
2020/03/12(木) 22:04:10.30ID:cajL7pgu
ググれカス
2020/03/12(木) 23:11:58.22ID:yVQIWR3t
>>600
GC前にヒープにいくつも文字列の実体がある原因はわかりました
new String の中で、文字コードの変換のため、配列をコピーしてたりしたので、それが反映されたんだと思います

どの公開されてるコンストラクタを読んでもダメそうだったので、パッケージプライベートなコンストラクタをリフレクションで呼んだら、
GCしなくても、ヒープ上の文字列は1つになりました

var con = String.class.getDeclaredConstructor(byte[].class, byte.class);
con.setAccessible(true);
return con.newInstance(chars, (byte)0);

リテラルを宣言した時に後ろの方のアドレスに出てくる文字列に関してですが、周辺のアドレスのバイナリ列を覗いてみると、.
class ファイルをバイナリエディタで覗いた時と似ていました(完全に同じではない)
Run-time Constant Pool に String のメモリ実体が存在してるようにも思えるんですが、
そのアドレスが本当に Run-time Constant Pool なのかどうかは定かではなく、詳しくはわかりません
2020/03/12(木) 23:17:36.83ID:cajL7pgu
あのなぁ
ここはおめーの日記帳じゃねーの
ブツブツどうでもいいくだらないことはチラシの裏かバカッターでやってろよ
2020/03/12(木) 23:21:02.97ID:pkopIzBG
意訳) ぼくのわからない事しゃべらないで
2020/03/12(木) 23:23:23.10ID:cajL7pgu
やってることも滅茶苦茶だしホントキチガイだなコイツ
バイナリエディタでクラスファイル見るとか
とにかく背伸びして適当なことをぐちゃぐちゃやってみて
そのアホみたいなことをここに書き込むのやめろアホ
見ててホント香ばしすぎる
2020/03/12(木) 23:38:16.90ID:cajL7pgu
とにかく基本を全然理解してないのに
こういうアホみたいなオナニー試行レスつけて荒らすのやめろ
エントリポイントすら理解してないのに 「このアドレスはー定かではありません!(キリッ」 とか
この前のアンロードといい、なんなんおまえ?学習能力0か?ん?
2020/03/12(木) 23:55:25.03ID:HpZDB/Wj
>>603
正直良くわかりませんが、リテラルで記述すると後ろの方に残るというのはファイルのバッファかもしれません。
クラスを読み込む時にはruntimeのネイティブ層(C/C++等で書かれている所)でクラスファイルの内容をメモリに読み込んでから色々行うわけですけど、
バッファをフリーしても0埋めされるわけではないのでそれが残って見えているのかもしれません。
ものすごいいい加減な憶測ですけど。
2020/03/13(金) 00:07:21.19ID:WLTn01dC
ここまでアホだと逆に面白いねw
一行で回答教えてやってるのにそれすらもスルーしてまた茶番始めるとかw
まぁ自演だろうけどさw
2020/03/13(金) 00:18:42.48ID:rzyj6FlT
>>608
ありがとうございます
自分もそれは考えたんですけど、CheatEngine 以外でもJNA経由でメモリ読んでみてて、MEM_COMMIT 属性はつけて検索してるんですよね
バッファをフリーした時点で、おそらく MEM_COMMIT 属性って外れて検索対象から外れるんじゃないかと思うんですが違うんでしょうか
System.gc() を何度しても消えないことから、Javaコード内で参照が消えたバッファとも考えにくいですし

後、荒らしに反応するのもあれだけど、エントリポイントってのはコード領域、 .text セクションの話で
今言ってる Run-time Constant Pool ってのは、JVMヒープかネイティブヒープか、そうじゃなくてもコード領域には絶対ない
エントリポイントからのオペコードから Run-time Constant Pool のアドレス領域割り出せるスーパーハカーなら弟子にしてほしいくらい
2020/03/13(金) 00:25:13.68ID:WLTn01dC
小学生しか使わないチートエンジンなんか使っておいて何言ってんだこの馬鹿w
自分でエントリポイントすら特定できないうえに一人でずっと勘違いして関係ないことやってるアホのくせにw
あと自分で理解できない単語を一生懸命並べて背伸びしたつもりになる癖にやめたら?w
滑稽すぎて腹痛いんだけどw
2020/03/13(金) 00:31:07.93ID:WLTn01dC
>エントリポイントってのはコード領域、 .text セクションの話で
全然違うけど?ん?頭大丈夫か?

>Run-time Constant Pool ってのは、JVMヒープかネイティブヒープか、そうじゃなくてもコード領域には絶対ない
支離滅裂。日本語の文章書けるか?ん?

>エントリポイントからのオペコードから Run-time Constant Pool のアドレス領域割り出せる
言ってること滅茶苦茶。完全意味不明



このキチガイ論法で何を言いたいの?w
脳に何か障害でもある?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況