運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。
J2EEがミッションクリティカルな分野に適用されるようになり、Javaのパフォーマンスチューニングの重要性はさらに高まっています。パフォーマンスチューニングにはさまざまなパラメータがありますが、中でもJava VMに関連するチューニングの効果は大きいといわれています。本稿は、Java VMに関連するチューニング手法を学ぶための前提知識を提供することを目的にしています(編集部)。 Java VMに関連するチューニングを行い、J2EEアプリケーションのパフォーマンスを上げるためには、Java VMについて詳しく知る必要があります。本稿は2回に渡ってJava VMの基本構造と動作原理を詳細に解説しますが、内容を理解するためにはプログラムがコンピュータ上で動作する基本原理とJava VMの基本用語を知っている必要があります。Java VMの基本用語に関しては、「実行スピードに挑戦するJavaアーキ
Tenured領域を早く使ってしまうパターン 前回ご紹介したように、HotSpotのヒープでは、アプリケーションがオブジェクトを作成するとまずはじめにEden領域が割り当てられ、マイナーGCによってSuvivor領域、Tenured領域へと移動していく流れが一般的でした。 しかし、このパターンではないイレギュラーなパターンがいくつか存在します。 その1つが、「オブジェクトが一般的なパターンに比べ、早くTenured領域に移動してしまう」というものです。 図1 Tenured領域を早く使ってしまう例 Tenured領域はメジャーGCの対象であり、メジャーGCはNew領域を対象とするマイナーGCに比べ、はるかに停止時間が長くなります。そのため、このようなパターンが頻繁に起こる場合は、メジャーGCの多発によってアプリケーションの停止時間が増加します。 図2 Tenured領域を早く使ってしまう
最近メモリを大量に使うJavaのプロセスに関する仕事があり、GCの知識が必要になったので調べたことをまとめておきます。調べたら色々出てくる時代ですが考えを整理するために書きました。間違った認識をしている可能性はあるのでそこはご指摘いただけると幸いです。 注: この記事は最新のGC事情を整理するものではなく、古典的?な手法について書いてます。 JVM まずはざっくりJavaの基本的な仕組みから。 JavaのプロセスはJVMと呼ばれる仮想マシンの上で動作します。この仕組みは様々なOSで動作し、環境の差異を気にする事なくコンパイルされたJavaのコード(クラスファイル)を様々な環境で実行可能にしてくれます。 JVMにはいくつ種類がありますが、本記事はOpen JDKで用いられるHotSpot VMの場合を想定しています。(他のJVMとの違いはわからない) ヒープ領域 Javaのプロセスを開始する
OOMKillerの殺意 顧客EC2のTomcatがアクセスの無い早朝にもかかわらずOOMKillerに突然殺されてしまったので、調査した顛末をたぶん同じような問題に直面されている方もおられるかと思いますので備忘録として記載します。 Javaヒープのチューニングにも多少役立つかと思います。 (この記事はJava8が対象となります。) OOMKillerとはOut of Memory時に、サーバ全体を守るためにメモリーを消費しているプロセスを停止するLinuxの標準機能です。 そのOOMKillerになんとTomcatが突然殺害されてしまいました。 問答無用の辻斬り状態です。 早朝ですのでアクセスログには何も記録されておらず、catalina.outには OpenJDK 64-Bit Server VM warning: Setting LargePageSizeInBytes has no
JavaOneから改称し、ディベロッパー向けの総合技術イベントとして開催された「Oracle Code One 2018」。今回は、そのキーノートでモデレーターを務めたGeorges Saab氏への特別インタビューの内容をお届けします。講演をあのような構成にした意図は? Java 8はいつまで使い続けていい? AdoptOpenJDKやJakarta EEを正直どう思っている? などなど、空気を読まずに質問をぶつけた結果をお楽しみください。 本記事はOracle Code Oneレポートの第2回ですが、単体で読める構成にしています。なお、初日のJavaキーノートの詳報をお伝えした第1回のレポートはこちらから参照ください。 Georges Saab氏:大変きさくなGeorges氏(VP Oracle Java Platform Group Chair OpenJDK Governing Bo
APサーバのリソースで最もよく使われるのは、データソースとスレッドプール アプリケーションサーバ(APサーバ)は、データベースのコネクション、アプリケーションの実行スレッド、メッセージングのキューなどさまざまなリソースをアプリケーションへ供給します。今回は、それらのリソースの中で最もよく使われる、次の2つを例に紹介します。 データベースのコネクションを管理しているデータソース アプリケーションの実行スレッドを束ねているスレッドプール この2つはたいていのケースで使われて、問題となることも多いため、リソースを必ず監視しましょう。 リソース数を確認した結果、残りリソースが0ではない(すなわち、不足していない)のに何か問題が起きているならば、ほかのレイヤーを分析しましょう。 残りリソース数が0の場合は、リソースが不足している可能性があります。 さらに、リソース割り当て待ちが増加傾向にある場合は、
Java開発者の周囲では今、さまざまに新たな動きが起こっている。OracleがJava EEのコミュニティー化、Oracle JDKの方針変更など、Javaに関するこれまでのやり方を変えたことがユーザーの混乱につながっている。一方、Java EEの世界では「アプリケーションのマイクロサービス化」がますます声高に叫ばれるようになっている。エンタープライズJava開発者の中には、これに戸惑いを覚え、あるいは疑念を持つ人たちも多い。 今、Java開発者は何を考え、今後どのように行動すべきか。長年Javaの開発に携わってきており、開発者への的確なアドバイスで知られるRed Hatのプロダクトマネジメント担当シニアディレクター、リッチ・シャープルズ氏に、率直に聞いた。 ――Oracleが2017年10月に、Oracle JDKのバグフィックスやセキュリティアップデートに関する方針を変えました。これに
2017年9月にリリースされたJava 9にはさまざまな新機能が追加されていますが、中でもとりわけ影響度が大きいのがモジュール機能です。この機能の導入にともなって、JDK 9には旧バージョンとの互換性を伴わないいくつかの修正が加わっているからです。すなわち、既存のアプリケーションやライブラリがJava 9ではそのまま動かない可能性がある、ということです。 10月1日から5日の5日間に渡って開催されたJavaOne 2017でも、このモジュール機能は大きなトピックのひとつとして挙げられ、多くのセッションが開かれました。本レポートでは、それらのセッションで紹介された内容も踏まえながら、Java 9のモジュール機能についていま一度おさらいします。 モジュール機能の追加に至る紆余曲折 Javaへのモジュール機能の追加に関する議論がスタートしたのは10年以上も前のことになります。Javaアプリケーシ
サンフランシスコで開幕した「JavaOne 2017」。初日の基調講演では、オラクルがJava対応のサーバレスプラットフォーム「Fn Project」(エフエヌプロジェクトと発音されていました)を発表。オープンソースとして公開しました。 Fn Projectは、3つコンポーネントで構成されています。1つ目はFunction as a Serviceを実現する「Fn Server」。クラウドでも、手元のノートPCでも実行可能で、コンテナネイティブとして開発されています。 2つ目は、Java Function Development Kit(Java FDK)。JavaでFunctionを記述するためのSDKです。テストも可能。 3つ目は、Functionのオーケストレーションによる高度なワークフローを実現するFn Flow。 Fn Projectは言語に依存しないサーバレスプラットフォームと
サポート切れシステムStruts※1の完全移行が可能 スタイルズ開発、自動移行ツールの問い合わせ数が昨対比13.6倍! ~2017年3月に発生した大型情報漏えい事故による危機意識が契機に~ 株式会社スタイルズは、サポート切れシステム(Java※2フレームワーク※3:Struts)による不正アクセス事故に対抗するため、今年度の主力サービスとして展開したStruts移行サービスの2017年度上半期(2017年4月1日~9月30日)問い合わせ数が前年比、13.6倍と好調でした。Struts脆弱性が引き起こした2017年3月の大型情報漏えい事故が問い合わせ増加の契機となりました。 株式会社スタイルズ(本社:東京都千代田区、代表取締役社長:梶原 稔尚 以下、スタイルズ)は、サポート切れシステム(Java※2フレームワーク※3:Struts)による不正アクセス事故に対抗するため、今年度の主力サービスと
MVCアーキテクチャに関しては、どちらのフレームワークも準拠しており、特に差はありません。それに対して、Rails、Struts双方の思想を特徴付けるものの1つに、ORMのバンドルの有無が挙げられるのではないでしょうか。Strutsは、フレームワークとしてのシンプルさ、ライトウェイト性を重視し、ORMをはじめとするいくつかの機能については、ほかのソリューションとの組み合わせを前提とした構成となっています。対してRailsは、ActiveRecordというORMを初めからバンドルしています。これはあらかじめ必要な機能を提供するという側面もありますが、前述したようにRails流の規約に統制するために1つのORMに限定してバンドルしたとみることもできます。 また、Railsには開発者が記述すべき設定ファイル類が少ないことも特徴です。「設定より規約」の思想に基づき、多少柔軟性や汎用性を犠牲にする部
わたしは元SIerで、JavaによるWEBアプリを作っていた経験がほとんどだったのですが、 ついに最近Rubyでのお仕事をはじめました。これはその感想です。 わりとJavaディスり気味になるかもしれません 1.これまでの経験とか フレームワーク的には ・単なるJSP/Servlet ・Struts/Struts2 とか使ってた感じです 最近はScalaでScalatraとかも見たり修正したりしてました。 2.WEBアプリにおけるJavaとRubyの比較 ここでの比較は言語ではなく、フレームワークの戦いになると思います。 つまり、Struts/Struts2などなど vs Rails。 実装のしやすさ、間違いを犯さないかどうか これは完全にRailsに軍配が上がると思います。 Javaは書いたコードの出来上がりはPythonのように一定の粒度で書けますが、構造に欠陥ができやすいというのが私の
[速報]Java 9が正式リリース、Javaをモジュール化するProject Jigsawがついに実現。今後のJavaは6カ月ごとタイムベースのアップデートへ 米オラクルは9月21日(日本時間9月22日未明)、Javaの最新バージョンとなるJava 9正式版を公開しました。 Java 9 is Out!!!!#JDK9 #Java9 #Javahttps://t.co/VE7BI4KPlK pic.twitter.com/kOdNiLJ1ky — Java (@java) 2017年9月21日 Java 9最大の新機能は「Project Jigsaw」として開発されたJavaのモジュール化機能です。おそらくJavaの開発のなかでももっとも難産なプロジェクトだったといえるでしょう。 難産の末にProject Jigsawがついに実現 Javaをモジュール化して必要な部分だけを使えるようにする
Photo by Yuki Shimazu 初めの一歩を踏み出したいあなたへ。 paizaのユーザーアンケート(※すぐ下のリンク先参照)でも根強い人気を誇るJava。特に社会人では1位と非常に高い支持を集めています(学生では3位)。実際の開発業務でも広く使われており、求人件数も安定して多い言語です。また、C言語とともに、プログラミング学習を始める際に最初に学ぶことが多い言語でもあります。 paiza.hatenablog.com Javaは1990年代前半、サン・マイクロシステムズ(2010年オラクルにより吸収合併)でジェームズ・ゴスリン、ビル・ジョイらによって開発されました。OSに依存しないため、ネットワークでの使用に対応したサービスの開発に適しています。ATMなどの大規模システムに広く使われているほか、多くのWebサービス(TwitterやEvernoteが有名です)やAndroidの
Oracleは8月18日(米国時間)、「Opening Up Java EE|Oracle The Aquarium Blog」において、この夏以降にJava EE 8の提供を予定していることを伝えるとともに、Java EE 8を公開した後に開発プロセスを見直すと伝えた。 現在Java EEの仕様策定はOracleの影響力が強い状況にあるとされている。この開発プロセスをオープンソースコミュニティに委ねることで、より優れたエコシステムの構築を目指すとしている。具体的にどのように開発プロセスをオープンにするのかは今後さらに検討するとしている。 2016年頃から、OracleがJava EEの開発から手を引くのではないかと複数のメディアが指摘するようになっていた。その理由としては、Java EE関連のエンジニアに対してJava EE以外の仕事に着手するように指示が出たことや、Java EEに関す
まとめました JJUG CCC 2017 Springの発表資料(スライド)を纏めました。 現在非公開になっているものは見つけ次第、追記していこうと思います。 また、漏れてたり間違ってたり追加があったり後に非公開になったりした場合は @ryoichi_obara までお知らせ頂ければと思います。 スライドが無くて、Togetterがあるものはそちらにリンク貼っていたりします。 A0 日本Javaユーザーグループ 年次総会 日本Javaグループ2017年定期総会 #jjug from 日本Javaユーザーグループ www.slideshare.net ABCD1 JJUG CCC 20th fireside chat 未公開 E1 ふつうのJavaコーディング F1 Hipsterで学ぶ!Springによるサーバサイド開発手法 GH1 非機能要件とSpring Boot ABCD2 Java
今月から、Java SE 9で導入されるProject Kullaについて紹介していきます。Project KullaはOpenJDKのサブプロジェクトで、JShellというツールの仕様策定、実装を行っています。Project KullaのリードはOracleのRobert Field氏、また日本からは吉田真也氏がコミッタとして参加しています。 JShellはいわゆるREPL(Read-Eval-Print Loop)ツールで、Javaのコードをインタラクティブに入力し、その場で実行できるツールです。 Java SE 9は2017年7月にリリース予定ですが、既にEarly Accessは公開されています。本記事でも、Java SE 9のEarly Accessを使用していきます。Early Accessのビルドは毎週行われており、本記事ではBuild 153を使用しました。 JShellと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く