タグ

JVMに関するtakuma510のブックマーク (23)

  • JJUG CCC 2013 Fall「JVMコードリーディング入門」資料公開 - 虎塚

    土曜にJJUG CCC 2013 Fall(http://www.java-users.jp/?page_id=695)へ行ってきました。 事前にお知らせするのを忘れていましたが、17:15〜18:05のセッションでJVMのソースコードリーディングについてお話ししましたので、発表資料を公開します。 R5-5 JVMコードリーディング入門 〜JVMのOS抽象化レイヤーについて〜 JVMのコードを読みはじめたばかりの方を対象に、JVMとOSのメモリを中心とした関係性についてお話しします。JVMはOSからどのようにメモリを確保しているのでしょうか? そんな素朴な疑問をもとに、JVMのコードを楽しく追いかけてみましょう。※このセッションは入門者向けです。バイトコードやGCについては扱いません。 虎塚 (さくらば組) http://www.java-users.jp/?page_id=709#r5-

    JJUG CCC 2013 Fall「JVMコードリーディング入門」資料公開 - 虎塚
  • Java 8でPermGenのOutOfMemoryError問題は解決されるのか?

    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 8でPermGenのOutOfMemoryError問題は解決されるのか?
  • Gradle入門 - Qiita

    追記1: コメントでの指摘を受け、gvmに関する記述を削除 この記事は、日経ソフトウェア 2013年 06月号 04/24発売 のステマ記事です。 6月号に、@keiji_ariyama(前座部分担当) と 僕(Gradle概要担当) と @sys1yagi(Android対応部分担当) という分担でGradle入門的な記事を書きました。 ですが、僕の目的としてはトップゲート社員への布教を主目的と考えて書いたため、来要求されている分量を(わざと)大幅にオーバーして書いていました。雑誌に掲載されなかった溢れ分をネットで公開して良いか打診した所、「全文掲載でも良いですよ」という豪気なお許しを頂いたのでここに公開します。この場を借りてお礼申し上げます。 プロの編集さんの手を経て、だいぶわかりやすく噛み砕かれたものが雑誌のほうには掲載されていますので、ここに書いてある内容が難しいなぁ…と思ったら

    Gradle入門 - Qiita
  • JVMのリモートメモリ監視(jconsole)

    JDK5.0以降、監視ツールなど有用なものがけっこう含まれています。 ※JDK6.0で試しています メモリはjconsoleが一番見やすいと思います。 JVM起動オブションに下記を追加 -Dcom.sun.management.jmxremote.port=ポート番号 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false portはwellknownポートでなければなんでもOK。 デフォルトでSSLとパスワード認証が有効になっているので無効にする。 jconsoleを起動して、リモートプロセスタブに[ホスト名:port]を入力して「接続」 でリモートJVMの監視ができます。 ここに色々のっていますね。 http://java.sun.com/j2se/1.5.0/

  • 「メモリーを意識してみよう」第1回 ヒープがどのくらい使われているかを理解する

    Javaのメモリーはガーベジ・コレクタが管理するため,アプリケーション側ではそれほど気にするありません。しかし,全く気にしないわけにはいかないのも実情です。 小さいアプリケーションでは無頓着であっても構いませんが,大規模になればそうもいってはいられません。使用メモリー量,ガーベジ・コレクション(GC)の頻度,リークの有無などは,できればチェックしておきたい項目です。 Javaではメモリーを複数の領域に分割して管理しています。クラス定義やメソッドなどのデータが格納されるPermanent領域や,インスタンスが割り当てられるヒープなどがあります。このような領域がどのように使用されているかを知ることは,パフォーマンスを考えるうえでもとても重要になります。 ここでは,特にヒープに着目していきたいと思います。 ヒープの使用量を知る まずはヒープの使用量がどのくらいになっているかを調べてみましょう。

    「メモリーを意識してみよう」第1回 ヒープがどのくらい使われているかを理解する
  • 3.  JConsole の使用

    JConsole グラフィカルユーザーインタフェースは、Java Management Extensions (JMX) 仕様に準拠した監視ツールです。Java 仮想マシン (Java VM) の広範なインストゥルメンテーションを使用して、Java プラットフォームで実行されるアプリケーションのパフォーマンスとリソース消費に関する情報を提供します。 Java Platform, Standard Edition (Java SE プラットフォーム) 6 では JConsole がアップデートされ、Windows および GNOME デスクトップの Look & Feel (他のプラットフォームの場合は標準的な Java のグラフィカル Look & Feel) を提供します。このドキュメントに掲載した画面キャプチャーは、Windows XP で動作するインタフェースのインスタンスから取得さ

  • “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT

    “Stop the World”を防ぐコンカレントGCとは?:現場から学ぶWebアプリ開発のトラブルハック(2)(1/2 ページ) 連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) Full GC問題の時代が再び到来! それまで順調に動いていたはずのWebアプリケーションが、ある時突然、応答を返さなくなる。そして、運用者があたふたしている間に、何事もなかったかのように再び動き出す。 Javaで構築したシステムにかかわる者ならば誰しもが体験するであろう事象、そうFull GC(ガベージ・コレクション)だ。Full GCが行われている間、すべてのアプリケーションスレッドは停止する。この事象は“Stop the

    “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT
  • 銀の鍵: Tomcatアーカイブ

    そういえばこれは公開していなかった。tomcatを自動起動するinitスクリプト。欲しい?じゃぁ、持って行って頂戴。Redhat用だよ。御代はGoogle AdSenseのワンクリックでいいよ。 #!/bin/sh # # chkconfig: 2345 99 10 # description: Tomcat init script # # 2005-2009 Ryuichi Kurishima # # Source function library. if [ -x /etc/rc.d/init.d/functions ]; then . /etc/rc.d/init.d/functions fi # Path to the tomcat launch script (direct don't use wrapper) export JAVA_HOME=/usr/

  • Java virtual machine - Wikipedia

    Per-method operand stack (up to 65535 operands) plus per-method local variables (up to 65535) Overview of a Java virtual machine (JVM) architecture based on The Java Virtual Machine Specification Java SE 7 Edition A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The

    Java virtual machine - Wikipedia
  • OpenJDK

    What is this? The place to collaborate on an open-source implementation of the Java Platform, Standard Edition, and related projects. Download and install the latest open-source JDK. Oracle’s free, GPL-licensed, production-ready OpenJDK JDK 22 binaries for Linux, macOS, and Windows are available at jdk.java.net/22; Oracle’s commercially-licensed JDK 22 binaries, based on the same code, are here. L

  • HotSpot Group

    The HotSpot Group The HotSpot group is comprised of developers involved in the design, implementation, and maintenance of the HotSpot virtual machine. Introduction The HotSpot VM code base has been worked on by hundreds of people, over the course of 20 years, so far. It's big. There are around 3000 C/C++ header and source files, comprising more than 1.2 million lines of code. In addition to the ex

  • スケーラブルで関数型でオブジェクト指向なScala入門

    Scalaの特徴を紹介し、基構文や関数、 クラスなど、Scalaの基的な機能について 解説する入門連載 EclipseでScalaプログラミングを始めるための基礎 スケーラブルで関数型でオブジェクト指向なScala入門(1) 概要や5つの特徴を紹介し、開発環境を構築して対話型実行環境「REPL」やEclipse上でHello Worldを実行します

  • VisualVM 入門 — Java.net

    VisualVM は、Java 仮想マシン (JVM) で実行中の Java アプリケーションに関する詳細情報を提供します。VisualVM のグラフィカルユーザーインタフェースを使用すると、複数の Java アプリケーションに関する情報をすばやく簡単に表示できます。 この入門ガイドは、VisualVM をすばやく設定して実行するための支援を行います。このガイドでは、VisualVM をインストールする方法と、VisualVM のアップデートセンターからプラグインをインストールして、ツールに機能を追加する方法を説明します。また、VisualVM の起動方法と、ローカルおよびリモートの JVM で実行中のアプリケーションに関して取得できるいくつかの情報の表示方法を示します。 実行中の VisualVM java.sun.com で紹介された短いスクリーンキャストで、VisualVM の機能を

  • http://www.insuite.jp/blog/archives/tag/tomcat

  • newするとJVM内で何が起こるのかという話(前編) - Kengo's blog

    私的まとめ。2段階に分かれており、今回はその初回。 JVM内の挙動を知るにはJVMに渡されるバイトコードを知ることからと考え、これについてまとめる。 バイトコードの確認 例えば public class Test { public static void main(String[] args) { Test test = new Test(); } } を $ javap -c Test すると、mainメソッドのバイトコードが public static void main(java.lang.String[]); Code: 0: new #1; //class Test 3: dup 4: invokespecial #16; //Method "":()V 7: astore_1 8: return になっていることがわかる。コンストラクタ呼び出しがnew,dup,invokesp

    newするとJVM内で何が起こるのかという話(前編) - Kengo's blog
  • チューニングに使えるJava性能監視ツール

    ヒープ領域とパーマネント領域 JavaVMには、独自のメモリー管理機構が搭載されています。不要になったオブジェクトを定期的に破棄してメモリーを開放するガベージ・コレクション機能と、永続的に使われるオブジェクトであるかどうかを判定する機能が搭載されています。 JavaVMが確保するメモリーには、大きく3つあります。オブジェクトを管理するヒープ領域と、読み込むクラス情報を確保するパーマネント領域、それ以外に、ランタイムが必要とするシステム領域です。 ヒープ領域は、必要に応じて保存と破棄が繰り返される領域となります。クラス情報は、パーマネント領域に格納されます。それ以外に確保されるメモリーとして、ランタイムが利用するシステム・メモリー(OS依存ヒープ・メモリー)とスレッド管理のメモリーが別領域になります。 New領域: ヒープ領域 New領域は、Eden、Survivor0、Survivor1(

  • OutOfMemoryError回避のためのJavaコーディング - 完結編 | 株式会社シンメトリック公式ブログ - 携帯開発から生まれる技術情報

    OutOfMemoryError回避のためのJavaコーディング - 完結編|株式会社シンメトリック公式ブログ - 携帯開発から生まれる技術情報| 携帯サイト開発から生まれる技術情報ブログ 前回と前々回でOutOfMemoryErrorの典型的な発生パターンを3つ紹介した。 (A)サイズオーバー型 巨大な領域確保によって一気にヒープの最大サイズをオーバー (B)メモリリーク型 開放されないオブジェクトが溜まり続けることで使用中メモリが徐々に増加し、メモリが枯渇 (C)マルチスレッド型 長時間処理により”死んだ”スレッドがメモリをい尽くす じゃあOutOfMemoryErrorが発生したときに、どのパターンのエラーに該当するのか?これを見抜くための手がかりを最後の話題にしたい。 原因究明の手がかりは・・・? OutOfMemoryErrorの原因究明。見るべきポイントはいくつかある。

  • The Java® Virtual Machine Specification

    Java SE > Java SE Specifications > Java Virtual Machine Specification The Java® Virtual Machine Specification Next The Java® Virtual Machine Specification Java SE 7 Edition Tim Lindholm Frank Yellin Gilad Bracha Alex Buckley 2013-02-28 Legal Notice Table of Contents Preface to the Java SE 7 Edition Preface to the Second Edition Preface to the First Edition 1. Introduction 1.1. A Bit of History 1.2

  • @IT:Javaパフォーマンスチューニング 第3回

    記事は、HP-UX Developer Edgeに掲載された記事を株式会社アットマーク・アイティおよび記事の筆者が独自の判断のもとに加筆・修正したものです。 今回は、Javaにおけるヒープ・メモリ管理の詳細を説明します。JVMのヒープ・メモリの中で、新しいオブジェクトと古いオブジェクトがどのように配置されるかを理解することで、ヒープ・メモリが有効に利用されているか否かを判断することができます。また、JVMが出力するガベージ・コレクションのログを解析し、オプションの指定によってヒープ・メモリのサイズを適切にチューニングする方法を紹介します。 Java ヒープ・メモリの構造 Javaにおけるガベージ・コレクションのメカニズムを理解するには、まずヒープ・メモリの構造を知っておく必要があります。 図1は、JVM におけるヒープ・メモリの構造を示したものです。この図が示すように、ヒープ・メモリの

    @IT:Javaパフォーマンスチューニング 第3回
  • HotSpot VMの特性を知る

    Permanent領域のチューニング JVMにはPermanent領域と呼ばれるヒープ領域があります。ここにはクラス定義やメソッド、フィールドなどのメタデータが格納されます。 Permanent領域のデフォルトのサイズは、一般的なアプリケーションにとって十分な大きさに設定されています。しかし、アプリケーションによっては非常に多くのクラスをロードするものもあり、Permanent領域が足りなくなることがあります。例えば、JSPやサーブレットを多用するアプリケーション(アプリケーションサーバなど)は、デフォルトのPermanent領域サイズでは足りなくなり、次のようなエラーが発生することがあります。 $ java ManyClassLoadingTest Permanent generation is full... increase MaxPermSize (current capacity

    HotSpot VMの特性を知る