JJUG CCC 2017 Spring の発表スライドです。Haskell 互換なふたつの JVM 言語 Frege と Eta について、モナドを利用した Java ライブラリ呼び出しの技法を解説します。 関連ブログ記事 : http://ccvanishing.hateblo.jp/entry/2017/05/21/150903

Oracle Blogsの主としてテクノロジー製品のエントリを日本語でご紹介します(オリジナルのエントリを投稿することもあります)。厳密性をご所望の方は原文をどうぞ。よい内容でしたら原文に対し、"Good Entry, thanks!"でもいいので、是非コメントお願いします(Typoや誤訳はコメント欄からどうぞ)。なお、このエントリは個人の見解であり、所属する会社の公式見解ではありません。また、エントリ内でご紹介している製品・サービスは国内導入時期が未定の場合もありますのでご了承下さい。 Good entries on Oracle Blogs are put into Japanese. Mainly this blog covers technology products. Opinions expressed in this blog is my personal one and d
先日職場でJVMの話をしてた。 ちょうどいい機会だからちょっとまとめたいと思う。 JVMの構成まずはJVMの構成について。JVMには3つの領域が存在する。 Permanent領域(非ヒープ領域) New領域(ヒープ領域) Old領域(ヒープ領域) Permanent領域にはJVMにロードされたクラスやメソッドの情報、New領域にはインスタンス化されたオブジェクトの情報、Old領域には寿命の長いオブジェクトの情報が管理される。(「寿命の長い」については後述のScavenge GCを参照。) Permanent領域は非ヒープ領域、New領域とOld領域はヒープ領域となる。 非ヒープ領域には基本的にGCは走らず、JVM起動時に静的な情報が管理される。(※) 一方、ヒープ領域はインスタンス化されたオブジェクト情報といった動的な情報が管理され、GC対象となる。 ※ユーザ定義のクラスローダーが存在する
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 第2回です。 なかなか更新できる時間がないですが マイペースで書いていこうと思います。 ストックやフォローをして頂けると励みになります。 さて前回はGCの仕組みの概要説明とjstatでのモニタリングでした。 今回はCGログの分析をしてみようと思います。 JVMのGCログ設定 まずはGCログが取得できるように設定しないと始まりませんね。 以下のようなオプションをjavaの起動コマンドに付与すると GCの情報を取れるようになります。 -verbose:gc [GC 919089K->41941K(943744K), 0.2300771 se
第3回になります。 記事を書くこと自体に時間がかかってしまうので 見やすい記事にするってのが難しいですね。。 少しずつ改良していきます。 ストックやフォローをして頂けると励みになります。 さて、本題です。 jstatやGCログなどを見てメモリがなかなか開放されない場合は ヒープダンプを取ってメモリの中身を解析することになります。 ヒープダンプの取得 まず、jstatやpsコマンド等で対象のJVMのプロセスIDを取得しましょう。 これで指定した場所にダンプファイルができます。 -dump:live,format=...というようにliveをつけるとGCが起きて コマンド実行時に活きているオブジェクトのみのダンプになるようです。 とりあえず今回はフルで取ります。 ヒープダンプの中身を解析をする 解析をするにはツールを使います。 java標準のjhatやMemory Analyzer、HeapA
こんにちは。ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は藤岡弘の弟子になることです。 Cybozu では多くの Java アプリケーションが稼働しており、トラブルも発生します。僕はトラブル対応をすることが多く、今まで大小様々なトラブルを見てきました。その中で得られた知見を社内ドキュメントとして記していましたが、そちらを手直ししたものを本記事で公開します。Cybozu ではインフラ基盤に Ubuntu を用いているので各種ツールの紹介もすべて Ubuntu を前提にしていることをご承知ください。 すぐやること 各種データはトラブルが発生している状態で運用チームに取得してもらいましょう。鮮度が重要なデータも多いので、常日頃運用チームと手を取り合ってトラブル対応できる組織づくりをしておくべし。 モニタリングツールで該当環境のデータを確認 トラブルの原因は多種多様です。
Java 9の先、Java 10/11では最新のハードウェアやOSに最適化したデータのメモリ配置が可能になる。JavaOne 2015 サンフランシスコで「JavaOne 2015」が開幕。基調講演の後半では、2018年かそれ以降になると見られるJava 10やJava 11に向けて開発中のプロジェクトが紹介されています。 最新のハードウェアに最適化されたデータ構造の実現により、実行速度の向上などが見込まれる「Project Valhalla」と「Project Panama」です。 基盤となるハードウェアやOSに適合していく Java Platform Group Java LanguageアーキテクトBrian Goetz氏。 Java 9の先、Java 10、11を見ていこう。 JavaVMにとってハードウェアの進化は重大なことだ。JavaVMはその基盤となるハードウェアやOSに適合
The leitmotiv of JAVA is its famous WOTA: “write once, run anywhere”. In order to apply it, Sun Microsystems created the Java Virtual Machine, an abstraction of the underlying OS that interprets compiled java code. The JVM is the core component of the JRE (Java Runtime Environment) and was created to run Java code but is now used by other languages (Scala, Groovy, JRuby, Closure …). In this articl
Mapに突っ込んだプロパティ的なデータをさらにListに突っ込む。 みたいな処理を行いたいとします。 Listに登録するデータ量がそれなりにある場合、すぐにOutOfMemoryが 発生してしまうので、なんとかならないか考えてみました。 通常パターン 何も考えずに作ったプログラムがこちら。 Mapにkey-valueのペアを100個ほど登録し、さらにそのMapをListに追加します。 -Xmx10mのオプションをつけて、使用するメモリを10MBに制限して実行し、 何個Listに突っ込めるか試してみました。 package sample;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainProcess {
あのWebサービスもJVMを利用している 「Javaは大規模なエンタープライズシステムにしか使われない」 それが常識だと思っていませんか? たしかに、これまでJava Virtual Machine(JVM)は、他の言語を実行すると遅く、Javaのプログラムを実行する環境にすぎないものでした。ところが、Java 7から実装されたInvokeDynamicにより、JVM上で、RubyやPHPなどさまざまなコンピュータ言語で記述されたプログラムをより高速に実行できるようになりました。 これにより、今までエンタープライズでJava言語で記述されたプログラムを実行するだけの環境であったJVMが、汎用的な実行環境になったと言えます。また、これまでJavaの実行環境として使用されていたノウハウが、他の言語で記述されたプログラムを実行する際にも利用できます。 最近では、TwitterがJVMをアプリケー
Personal insights into the world of technology I’m Ikai and I say a lot about the world of technology. This blog contains some of the more interesting ideas I’ve shared. Let me demistify technology. The rate of technological development has increased dramatically over the last ten years making it easier than ever to be confused and exploited. I’m here to take the guess work and confusion out of te
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く