タグ

javaとjvmに関するlearnのブックマーク (38)

  • Javaのパフォーマンスについての9つの誤信

    JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ

    Javaのパフォーマンスについての9つの誤信
    learn
    learn 2013/05/11
  • Javaのクラスファイルの読み方 - 虎塚

    日曜に、「夏休みバイナリ入門 2012 第1日目」に参加してきました。 色々と初心者丸出しな質問をしましたが、詳しい方が丁寧に教えてくださったおかげで、疑問を解決しながら進むことができました。ありがとうございます。 備忘のために、学習したことをメモします。 やったこと Javaで「hello」とコンソール出力するHello.javaを書く。 コンパイルする。(javac Hello.java) 実行して、正しく動くことを確かめる。(java Hello) javapをかける。(javap -v Hello.class) バイナリエディタでHello.classを開いて、出力を読む。 Javaのバイトコードを読むための『Java仮想マシン仕様』の参照方法を学習しました。 また、スタッフの方がJavaScriptで実装されたスタックマシンのデモを見せてもらったり、加算と乗算が混じった計算がどの

    Javaのクラスファイルの読み方 - 虎塚
  • VM Spec The Structure of the Java Virtual Machine

    Java Language and Virtual Machine Specifications Java SE 22 Released March 2024 as JSR 397 The Java Language Specification, Java SE 22 Edition HTML | PDF Preview feature: Implicitly Declared Classes and Instance main Methods Preview feature: Statements Before super(...) Preview feature: String Templates The Java Virtual Machine Specification, Java SE 22 Edition HTML | PDF Preview feature: Implicit

    learn
    learn 2012/07/13
    Java言語仕様とJVM仕様
  • 実行中のJavaアプリケーションの拡張設定を確認/変更する - CLOVER🍀

    jinfoというJDKに付属しているコマンドラインツールを使用すると、Javaの起動オプションやシステムプロパティを確認できたり、「-XX」ではじまる一部の値については実行中に変更できるようです。 詳しい説明は以下に書いてありますが、jstackやjmapなどと同様、使用するには対象のJavaVMのPIDが必要です。 http://java.sun.com/javase/ja/6/docs/ja/technotes/tools/share/jinfo.html 例えば、以下のようなちょっとわざとらしいオプション指定でJavaアプリを起動します。 $ java -Xmx512M -XX:+UseParallelGC -XX:+UseParallelOldGC -XX:ParallelGCThreads=2 -XX:+PrintGCTimeStamps -XX:+PrintGC -XX:+Pr

    実行中のJavaアプリケーションの拡張設定を確認/変更する - CLOVER🍀
  • Java コードから Java ヒープまで

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Java コードから Java ヒープまで
  • Java HotSpot VM Options - #9 Backyard

    以下 Java HotSpot VM Options の勝手翻訳と、追加で原文には載っていないオプションについて。Oracle JDK 6 を対象とした内容となっています。 このドキュメントは Java HotSpot 仮想マシンのパフォーマンス特性に影響を与える一般的なコマンドラインオプションと環境変数に関する情報を提供します。特に断りのない限りこのドキュメントのすべての情報は Java HotSpot Client VM と Java HotSpot Server VM の両方に適用されます。1.3.0 より古い JDK に Java HotSpot VM を移植したいユーザは Java HotSpot Equivalents of Exact VM Flags を参照して下さい。 Java HotSpot VM オプションのカテゴリ Java HotSpot VM が認識する標準オプ

    Java HotSpot VM Options - #9 Backyard
  • Troubleshooting Guide for Java SE 6 with HotSpot VM

    This document is a guide to help troubleshoot problems that might arise with applications that are developed using the release of Java Platform, Standard Edition 6 (JDK 6 release or Java SE 6 release). In particular, this guide addresses possible problems between the applications and the Java HotSpot virtual machine. The document provides a description of the tools, command line options, and other

  • JBoss AS 7のJava VMチューニング - nekop's blog

    JBoss Advent Calendar 2011の15日目のエントリです。JBoss AS7 はじめの一歩で少し書いたんですが、だいぶ古くなっているのと少々解説を。今回はJBoss AS 7.1.0.Beta1とFedora 16のOpenJDK 6 64bitを利用します。 $ java -version java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.4) (fedora-61.1.10.4.fc16-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode) チューニングしていない状態 JBoss AS 7.1.0.Beta1の出荷時のJava VMオプションは$JBOSS_HOME/bin/standalone.confに定義され

    JBoss AS 7のJava VMチューニング - nekop's blog
    learn
    learn 2011/12/18
    オプションの一覧とそのデフォルト値は-XX:+PrintFlagsFinalオプションで取得
  • Twitterの人が語るパフォチューとは - 谷本 心 in せろ部屋

    Everything I Ever Learned About JVM Performance Tuning at Twitter https://oracleus.wingateweb.com/published/oracleus2011/sessions/37941/S37941_2408980.pdf Twitterの中の人がパフォーマンスチューニングについて語るセッション。 スケーリング? いや、エクストリームです。 きっと凄いスケーリングの話をするのかと思ったら、 全くの真逆で超細かい、エクストリームな話でした。 たとえば「メモリを使いすぎない」ようにするための説明では、 Objectをnewするだけで64bitマシンなら128bit (16byte) 消費する、という話に始まり ポインタ、オブジェクトヘッダ、配列ヘッダ、継承クラスで消費するメモリ(4byteとか24byte)の

    Twitterの人が語るパフォチューとは - 谷本 心 in せろ部屋
  • Javaパフォーマンス計測 JITとの闘い - プログラマーの脳みそ

    前回の文字列操作編では適当に文字列操作のパフォーマンスを測定しようとしたらGC様とJITコンパイラ様に阻まれた、という話だった。モヒカン族*1が「てめえの計測はなっちゃいねー!ひゃっはー!」と殴りかかったらケンシロウみたいなのが出てきて「あべしっ」となった、ぐらいのつまらない話だったが、反省してこれらと向かい合ってみたい。 JITコンパイラについての情報 JITコンパイラ(Just In Time compiler)とはインタープリタ方式のプログラム言語のランタイムが実行時に必要に応じて部分的にネイティブコード(CPUが直接実行できるマシン語)に変換することで高速化するというコンパイラである。もともとはもっと狭義のニュアンスだったが、今ではJITコンパイルとHotSpot動的コンパイルを併せて広義にJITコンパイル、それを実施する実態をJITコンパイラと呼んでいる感じだ。*2 ただ、やみく

    Javaパフォーマンス計測 JITとの闘い - プログラマーの脳みそ
  • 「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro

    先々週にHotSpot VMでのメモリー管理について解説しました。ここでキーとなるのは世代別GCです。 HotSpot VMで世代別GCが採用される以前は,Old領域のGCで使用されるMark & Sweep GCだけでした。世代別GCが導入されたことにより,GCのパフォーマンスは劇的に向上したのです。 しかし,GCの進化はここで終わってしまったのではありません。Java SE 6(開発コード名Mustang)にいたるまで,様々な改良が加えられてきました。 今週はそれらの新しいGCの手法について解説していきます。その前に,まずは基となるMark & Sweep GCを説明しましょう。 Mark & Sweep GC Mark & Sweep GCは二つのフェーズでGCを行います。 はじめのフェーズで,使用しているインスタンスに印をつけます(Mark,図1a)。Markにはルートインスタン

    「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro
  • HotSpot VMの特性を知る

    記事は、HP-UX Developer Edgeに掲載された記事を株式会社アットマーク・アイティおよび記事の筆者が独自の判断のもとに加筆・修正したものです。 連載の最終回は、HotSpot VMに固有の振る舞いを学びます。HotSpot VMのデフォルト設定ではパフォーマンスが思うように向上しないケースを紹介し、対処方法を説明します。また後半では、JVMのPermanent領域のチューニング方法を説明します。 ベンチマーク・プログラムからHotSpot VMの特長を探る アプリケーションのチューニングの効果を比較するためにしばしば作成されるのが、簡単なベンチマーク・プログラムです。しかし、HotSpotベースのJVMでは、ベンチマークの設計のまずさが誤解を生む原因となりかねません。例えば、ベンチマークによっては、旧型のJITJust-In-Time)コンパイラを備えたClassic

    HotSpot VMの特性を知る
  • Java SE 6 Mustang新機能

    [ Topページへ戻る ] [ Java SE SDKをビルドする ] Java SE 6 Mustang新機能 2005.10.20よりアクセス はじめに Mustang開発の主要テーマ リリース予定 JSR-270(Java SE 6追加仕様)で定義された新機能 JSR-199 コンパイラAPI JSR-269 アノテーションプロセッサー 参考URL JSR-250 標準アノテーション 新機能 コアクラス 文字列 ファイルI/O ネットワークI/O ユーティリティ JFC/Swing 全般 OSネイティブなルック&フィールにSwing対応を強化 Swingのサンプルプログラムを強化 レイアウト機能の改善 Swingのドラッグ&ドロップ改善 真のダブルバッファリングを提供 JTableでソート機能、ハイライト、フィルター機能を提供 Swingで別スレッドを扱うユーティリティクラスSwin

  • Javaの性能 - Wikipedia

    Javaの性能(ジャバのせいのう)では、Javaプラットフォームの性能について説明する。プログラミング言語としてのJavaに対する批判や、Javaプラットフォームの性能に対する批判は「Javaに対する批判」の記事を参照のこと。この記事ではJavaプラットフォームの性能について批判以外の説明をする。 プログラミング言語Javaは、その「ネットワークから送り込まれるプログラムの安全な実行」や「write once, run anywhere」というスローガンを、業界にありがちなスローガンだけのスローガンではなく可能な限り達成するべく、Javaバイトコードにコンパイルするコンパイラと、Javaバイトコードを解釈実行するインタプリタであるJava仮想マシン (Java VM, JVM)、という構成の実装を、公式の実装として伴って発表された。 コンピュータ科学的には特に目新しいものではない。しかし、

  • Java 暗号化拡張機能 JDK5.0

    Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

  • Java 6のスレッド最適化は実際に動作しているのか? - パートII

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Java 6のスレッド最適化は実際に動作しているのか? - パートII
    learn
    learn 2011/02/23
    元記事のコメントによると、バイアスド・ロックが3,4秒経過しないと適用されないのは、デフォルトでJVM起動後4秒は適用しないようになっているからで、-XX:BiasedLockingStartupDelay=0をつければすぐに適用されるとのこと
  • Java 6のスレッド最適化は実際に動作しているのか?

    はじめに - Java 6におけるスレッドの最適化 Sun、 IBM、BEAやその他のJVMベンダーが、それぞれのJava 6仮想マシンが提供するロック管理と同期の最適化に多くの注意を払ってきました。バイアスドロック、ロックの粗粒度化、エスケープ解析によるロックの削除、適応型スピンロックといった機能は、すべてアプリケーションのスレッド間でより効果的なオブジェクト共有を可能にし、並列性をより高めるために設計されたものです。こうした個々の機能は洗練されており、興味深いものですが、疑問があります;当にこうした約束を果たしてくれているのでしょうか?2つのパートからなるこの記事では、私はこうした機能を詳しく調査します。シングルスレッドベンチマークの助けを借りて、パフォーマンスに関する疑問に答える試みをしようと思います。 ロックは悲観的である Java でサポートされているロックの(ほとんどのスレッ

    Java 6のスレッド最適化は実際に動作しているのか?
  • Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ

    前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy

    Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ
    learn
    learn 2011/02/23
    へえ、知らなかった。すごいなJIT>実行時のプロファイリング結果から最適化が可能かを判断してホットスポットを最適化するようになっているらしい/ 追記:参考 http://t.co/HRybQT7 http://htn.to/vTkVjf http://htn.to/2GR6PS