AWS Dev Day 2022 で発表したJava アプリケーションの起動速度のアプローチの資料
![ぼくたちは Java アプリケーションの起動速度をどこまで縮められるか](https://cdn-ak-scissors.b.st-hatena.com/image/square/712c1bc9435452561b8c575eb3439be400ccfcf8/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F3237618fa97f4959b017f54084d18634%2Fslide_0.jpg%3F23376190)
プロセスIDがわかったらjmapコマンドでダンプを取ります。 サーバのディスク容量に注意してください。 heapサイズを2GBとかに設定した場合は2GB以上のファイルが 生成されることがあります。 これで指定した場所にダンプファイルができます。 -dump:live,format=...というようにliveをつけるとGCが起きて コマンド実行時に活きているオブジェクトのみのダンプになるようです。 とりあえず今回はフルで取ります。 ヒープダンプの中身を解析をする 解析をするにはツールを使います。 java標準のjhatやMemory Analyzer、HeapAnalyzerなど いくつかありますが今回はMemory Analyzerを使います。 Eclipseベースなのでサイズの大きいダンプファイルを開く場合は MemoryAnalyzer.iniの設定でツール自体のヒープサイズを 増やす
JVM (Java 仮想マシン) には DNS の名前解決の結果をキャッシュする挙動が備わっている。キャッシュするだけならいいのだけれど、このキャッシュでは DNS の TTL を無視してキャッシュするため、名前解決の結果が変わっても JVM からの接続先が切り替わるまでに(TTL から想定される時間以上に)時間がかかる、あるいは全く切り替わらないということがある。この挙動やその制御について調べたので、その話をする。 (以下の話題では Oracle JDK および OpenJDK を対象にして論じるので、それ以外の JVM 実装でどうなってるかは調べていない。適用できる箇所もあればそうでない箇所もありそう) 背景・解説 これらのデフォルト値は名前解決成功時は セキュリティーマネージャーがインストールされている場合のデフォルト値は -1 (ずっと) で、セキュリティーマネージャーがインストー
sbt-assemblyやMaven Shade Pluginなどで実行可能なJARファイル(java -jar xxxxx.jar)を作成することが できますが、このJARファイルの最初の方にシェルスクリプトやWindowsのバッチファイルの内容を差し込むことで、 単体のファイルとして実行することができるようになります。 Embulkが、この手法を使っています。 https://github.com/embulk/embulk/blob/v0.8.18/embulk-cli/src/main/sh/selfrun.sh 参考) 実行可能 jar をコマンドっぽく実行するために(java -jar 使いたくない) 実行可能JARファイルをバッチファイルまたはシェルスクリプトに結合して実行する - torutkの日記 確かにJARファイルだけだと、別に起動用のスクリプトもつけてあげないと苦し
This paper describes a reduction from the halting problem of Turing machines to subtype checking in Java. It follows that subtype checking in Java is undecidable, which answers a question posed by Kennedy and Pierce in 2007. It also follows that Java's type checker can recognize any recursive language, which improves a result of Gil and Levy from 2016. The latter point is illustrated by a parser g
Server::Starter を Java でも使いたいなあ、そうすれば LL の場合と同じような運用ができるなあ、という要望をたまに稀によく聞きます。 そんなときに決まって返される答えは、fdopen できないから無理じゃないすかね。。 ということである。 SO_REUSEPORT しよう SO_REUSEPORT なら、java でもちょっとの工夫で使えるんじゃないの? っていう説が出てくる。 で、頑張れば jetty で SO_REUSEPORT 使っていい感じに実装できそうだな、ということはわかって、サンプルコードも書いてみた。 しかし、実装してから指摘されたのだが、弊社では CentOS 6 が標準となっており、CentOS 7 が来るのはいつになるのかさっぱりわからない。 つまり、とりあえずしばらくの間は実践で使える可能性がほぼないということだ。 とりあえず、出来たものは出来
If you program systems with Java, you have probably long been using ConcurrentHashMap. This post explores a caveat. ConcurrentHashMap is often introduced to simplify code and application logic. For example: HashMap<String, MyClass> m = new HashMap<String, MyClass>(); ... synchronized (m) { for each (Entry<String, MyClass> e in m.entrySet()) system.out.println(e.getKey()+"="+e.getValue()); } might
All Implemented Interfaces: Serializable public final class Pattern extends Object implements Serializable A compiled representation of a regular expression. A regular expression, specified as a string, must first be compiled into an instance of this class. The resulting pattern can then be used to create a Matcher object that can match arbitrary character sequences against the regular expression.
OCaml-Java The goal of the project is to provide seamless integration of OCaml and Java: run OCaml code on a JVM, and manipulate Java entities from OCaml. Third alpha version (09 June 2015) The third alpha version is finally available, fixing several bugs, and enhancing the Java library. New alpha version (22 September 2014) A new alpha version has been released, fixing several blocking / annoying
HaskellやScalaなどで一躍大人気となった関数型言語には、その根底に型付きラムダ計算という計算体系の理論が存在しています。この型付きラムダ計算の理論のおかげで、関数型言語では型安全なプログラミングが出来るのです。 ではオブジェクト指向言語にはそのような理論は存在するのでしょうか。 Javaについては、割と最近ですが、Javaをモデル化した計算体系を扱った、 Featherweight Java: a minimal core calculus for Java and GJ [Igarashi et al., 2001] という論文が存在します。この論文では、JavaとJava 5.0以降で採用されたジェネリクスという仕組みをモデル化したオブジェクト指向の体系を定義し、この体系上での型安全性の証明を行っています。 この論文の体系では構造化定理で言う条件分岐と反復が定義されていません
Charles Oliver Nutter Java, Ruby, and JVM guy trying to make sense of it all Greetings, readers! Over the past couple weeks I've had a few departures from typical JRuby development. I consider it a working vacation. I'm hoping to report on all of it soon, but for now we'll focus on one of the most exciting items: JSR-292, otherwise known as "InvokeDynamic". I've reported on invokedynamic previousl
Java generics are indeed implemented by type erasure, so there is no type information in the bytecode. For example, let's take a look two classes which declare a List field, one in generic and the other in non-generic form: class NonGeneric { List list; } And, class Generic { List<String> list; } In both cases, the resulting bytecode is the following: Code: Stack=3, Locals=1, Args_size=1 0: aload_
結論はこうだ。「Androidに、Javaからのコード流用の疑念が提出されたが、両者のコードを比較した結果、明らかな流用は発見できなかった」。この一連の経緯を振り返ってみよう。 (本記事は、ゲストブロガーのITジャーナリスト 星暁雄氏による投稿です) デコンパイルでソースを復元、比較 知的所有権問題のコンサルタントが「AndroidにJavaのコードが混在か?」という内容のBlog記事を書いた。記事の内容は、ComputerWorldやEngadgetに紹介された。読んだ人は「Googleはまずい事をしでかしたものだ」との印象を持ったことだろう。Googleは、AndroidがJavaの特許と著作権を侵害しているとしてOracleから訴えられている最中だからだ。だが、記事を読んだプログラマが「結論としてJavaコードの盗用の事実はない」ことを明らかにした。 火種となったのは、Florian
この記事は古い情報です。EmacsでJavaを書くという話 - Qiitaを参照してMaghanadaを利用してください。 日常的にJavaを書く人たちのたぶん99%くらいはEclipseかNetBeansかIntelliJ IDEAといったIDEを利用しているであろうと思われる現代において今日も元気にEmacsでJava書いている絶滅危惧種のnekopです。Emacs Advent Calendar jp: 2010の12月15日分のエントリは、EmacsでJavaを書くというあまり一般的ではないであろうトピックについてさらっと紹介します。昨日はkwappaさんでした。 お仕事ではRed Hatという会社でJBossというオープンソースソフトウェアのソフトウェアエンジニアをしています。詳細はばっさり省きますが、それなりの量のソースコードを毎日読み書きすることになります。それなりの量、とは
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く