その2も書きました。 JavaでOutOfMemoryErrorが発生したときに、ヒープダンプを取得して解析することで、メモリリークの原因を調査することができます。 私の場合、OutOfMemoryErrorを解析する機会はそんなに頻繁にはないのですが、たまに出会したときに「どうやってヒープダンプ取るんだっけ?」、「何のツールでヒープダンプを解析できるんだっけ?」と毎回調べてるので、ちょっとメモっておくことにします。 ヒープダンプを取得する方法(参考: 公式のjhatマニュアル) jmap の -dump オプションを使って実行時にヒープダンプを取得する。jconsole のオプションを使って HotSpotDiagnosticMXBean 経由で実行時にヒープダンプを取得する。-XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemo
Java Language and Virtual Machine Specifications Java SE 23 Released September 2024 as JSR 398 The Java Language Specification, Java SE 23 Edition HTML | PDF Preview feature: Flexible Constructor Bodies Preview feature: Implicitly Declared Classes and Instance main Methods Preview feature: Module Import Declarations Preview feature: Primitive Types in Patterns, instanceof, and switch The Java Virt
米Sun MicrosystemsがJavaのオープンソースソフトウェア化を発表したのは2006年11月13日(米国時間)のこと。この発表により、Java SEの「Java HotSpot」「Java programming language compiler (javac)」「JavaHelp」、Java MEの「Java ME testing and compatibility kit framework」などのコンポーネントが、GNU GENERAL PUBLIC LICENSE Version 2のもとで自由に利用できるようになった。 実は、このときオープンソース化されたのは、Javaのコンポーネントだけではない。JavaのマスコットであるDukeも、The BSD Licenseのもとで(これといった制限がなく)公開された。Dukeの画像/名前を自由に利用できるようになったのであ
「特別ボーナスのお楽しみとして,我々はDukeもオープンソース化した」(“Javaの父”James Gosling氏)---米Sun Microsystemsは11月13日,Java本体のオープンソース化の発表に合わせ,JavaのマスコットであるDukeの3Dモデル・データなどを公開した。JavaはGPLv2で公開したが,DukeのデータはBSDライセンスとなっている。また,Dukeの名前も誰でも自由に使用できるという。 公開したのは,3次元グラフィックス・ソフト「Lightwave 3D」向けのDukeのモデリング・データと,アニメーション数点。DukeのほかLinuxカーネルのマスコットであるペンギンのTuxのデータや,DukeとTuxがクリスマスを祝うアニメーションもある。Java関連オープンソース・ソフトウエア・プロジェクトをホスティングするサイトjava.netで公開している。
2. 自己紹介 • Java原人 • Java原理主義者 • Javaのためならなんでも – ハードウェア設計(回路、PCB等) – ハードウェア実装(ホットプレートリフローを 提唱) – サーバーサイド技術(REST/SOAP等) – 組み込みJVM • 無線、特にZigBeeが好き – 日本ZigBeeユーザーグループ代表 3. (Java原人からみた) Javaとは • 小型の組み込み機器等に使われるプラット フォーム • センサーやクレジットカード、ICパスポート に組み込まれることが多い • 最近はパソコンでも動くようになったらしい • JVMと呼ばれる海のなかで動く – OSの上で動くことは稀 – OSがある時はLinuxが多い • ARMと仲がいい • お前にサンは救えない
登録制のWebアプリケーションって、たぶんユーザーのパスワードを暗号化してDBに格納すると思うんですよ。そのためには、SHA-1みたいなアルゴリズムで暗号化するのが一般的(?)だと思うので、そのサンプルコードです。 main文の中に全部つっこんで書いた方が、ブログ閲覧者的には理解しやすいんだろうけど、実際はたぶんこうやって使うんだろなって思ってクラスにしてやった。 サンプルコード import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /* * いわゆるハッシュ関数を使った暗号化クラス。 */ public class Encryption { /* メッセージダイジェストアルゴリズム */ public MessageDigest md = null; /* * テストコード *
概要 Javaでは、マルチスレッド用のクラスとしてThreadが用意されている。[2017-04-15] しかし新しいJavaでは、Threadを直接使う事はあまり無い。 ExecutorService/Future(JDK 1.5)やFork/Join(JDK 1.7)といったクラスが追加されているので、そちらを使う。 Java21で仮想スレッド(virtual thread)が導入された。[2023-09-23] これにより、従来のスレッドはプラットフォームスレッド(platform thread)と呼ぶようになった。 Javaでは、マルチスレッド用のThreadクラスが用意されている。 Threadを継承して独自のクラスを作り、runメソッドをオーバーライドして処理本体を記述する。 class スレッドクラス名 extends Thread { @Override public vo
【祝】:Java SE 7 正式リリース 2011年7月29日 at 2:00 午前 3件のコメント 本日(2011年07月28日(日本時間29日 日本でもぎりぎり28日だったようです。))Java SE 7 が正式にリリースされました。5年ぶりのリリースとなる Java SE 7 ですが、Java SE 7 は進化として位置づけられているバージョンになります。ここで言う進化とは言語仕様に対する大幅な変更はなく、開発生産性の向上やライブラリのアップデート等が多く、今まで Java SE 5, 6 等で開発をしてきて頂いた Java 開発者は比較的かんてたんに移行が可能になっています。Project Coin, NIO.2 等により可読性、開発生産性が向上した最新の Java SE を入手頂き是非開発現場でご使用ください。 サポート環境はこちら Java SE 7に関するドキュメント チュー
元ねた:Javaを使うなら必ず覚えておきたいデータ構造 - 配列・リスト・マップ - いろいろ解析日記 なんか色々と足りないよね、ってことで、色々と補足を。 配列 配列の生成 配列に含める要素が既に分かっている場合、例えば、 String[] strs = new String[2]; strs[0] = "hoge"; strs[1] = "piyo"; このような場合、以下のように記述できる。 String[] strs = { "hoge", "piyo" }; 独自のクラスだったとしても、 Hoge[] hs = { new Hoge(), new Hoge() }; と、普通に可能。 これを使うと、引数を 2 つ受け取って配列にまとめて返すメソッドは、 Hoge[] toArray(Hoge a, Hoge b) { Hoge[] result = { a, b }; retur
要約 変数やメソッド、クラスの名前に統一された名前をつけることは非常に大事なことです。初めてそのソースを見た人でも何に使われている変数なのか、どのような処理を行っているクラスやメソッドがあるのかがすぐにわかるようになります。 目次 2.命名規約 2.1.パッケージ名 2.2.ファイル名 2.3.クラス名 2.4.テストクラス名 2.5.例外クラス名 2.6.インターフェース名 2.7.抽象クラス名 2.8.定数(static final) 2.9.メソッド名 2.10.変数名全般 2.11.名前の対称性 2.12.ループカウンタ 2.13.スコープが狭い変数 2.14.大文字と小文字 2.命名規約 命名規約の基準として、各環境での OS がファイル名などに認めない文字列などは利用せず、基本的にはアルファベットのみで命名することとし、必要に応じて数字を利用することも認めます。命名においてはロ
このページで説明する内容は、実は非常に重要な内容です。 結構さらっと説明していますが、ここで説明したことを後で出てくる重要な項目に使うので、しっかり覚えておいてください。 「上書き」の意味 オーバーライドすることで、された側からした側へ「ひも」が付くということを説明しました。 このひもがあるおかげで、オーバーライドしたメソッドがされたメソッドを「上書き」することができます。 この「上書き」にはとても重要な意味があります。本当に「上書き」したようにプログラムが動くのです。 // OneMethodOverridedSubRunner.java /** * 普通のクラス。 * メソッド2つ持ちます。 */ class HasTwoMethodSuper { /** * 自クラスの名前を出力するメソッドです。 */ void printMyName() { System.out.println(
前書き お馴染み、hello worldのソース。 class Hello { public static void main(String[] args) { System.out.println("hello world"); } } このコードはコンパイルされると、こんなバイトコードになります。 ca fe ba be 00 00 00 32 00 22 07 00 02 01 00 05 48 65 6c 6c 6f 07 00 04 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 56 01 00 04 43 6f 64 65 0a 00 03 00 09 0c 00 05 00 06 01 00 0f 4c 69 6e 65 4e
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く