タグ

ブックマーク / kazuhira-r.hatenablog.com (7)

  • JavaがDockerコンテナ内でどのようにCPU数、メモリサイズを取得しているのかを調べてみる - CLOVER🍀

    これは、なにをしたくて書いたもの? 現在のJavaは、コンテナ環境下ではホスト側ではなくコンテナにリソース制限がかけられていればそちらの値を見るように なっています。 これはどこの値を見ているのかな?というのを確認してみたくなりまして。 なお、自分にはcgroupに関する知識はほぼありません。あくまで、Javaがどこの情報を見ているか?という観点で 追っています。 JDK-8146115 Javaも以前はホスト側のCPU数やメモリサイズを参照していたのですが、JDK-8146115(およびそのバックポート)が 入ってからはコンテナに割り当てられたCPU数やメモリサイズを見るようになりました。 https://bugs.openjdk.java.net/browse/JDK-8146115 Java 10以降、Java 8については8u191以降で対応しています。 デフォルトでこの機能は有効

    JavaがDockerコンテナ内でどのようにCPU数、メモリサイズを取得しているのかを調べてみる - CLOVER🍀
  • Maven Shade PluginのResource Transformerをちゃんと見る - CLOVER🍀

    これは、なにをしたくて書いたもの? Maven Shade Pluginを使うと、依存関係を含めたアーティファクトをUber JARにパッケージングすることができます。 で、設定する時にResource Transformerをなんとなく使っていたので、今回ちゃんと見てみようかなぁという気になりまして。 Resource Transformer? Resource Transformerとは、複数のアーティファクトやライブラリを集約する際に、重複するリソースをマージするための 方法を提供するものです。 一覧はここに載っています。 Apache Maven Shade Plugin – Resource Transformers ざっと載せると、こんな感じですね。 ApacheLicenseResourceTransformer … ライセンスの重複を防ぐ ApacheNoticeResou

    Maven Shade PluginのResource Transformerをちゃんと見る - CLOVER🍀
    HHR
    HHR 2022/07/21
    Shade Plugin Resource Transformer
  • Javaで特定のパッケージ配下のクラスを検索する - CLOVER🍀

    1度やってみたかったんですよね、これ。DIコンテナとかで、よく特定のパッケージ配下のクラスを検索するような機能がありますが、これを自分で書いてみようと思います。 検索対象のクラスが配置されているパターンとしては、 ディレクトリ配下に.classファイルが配置してある JARファイル内にパッケージングしてある というのがよく考えられると思います。今回は、とりあえず上記2つを対象に考えます。 まず、検索対象のスケープゴートとして、以下のようなディレクトリ構成のクラスを用意しました。 ソースコード root/RootPackageClass1.java root/RootPackageClass2.java root/sub/SubPackageClass1.java root/sub/SubPackageClass2.javaクラスファイル root/RootPackageClass1.cla

    Javaで特定のパッケージ配下のクラスを検索する - CLOVER🍀
    HHR
    HHR 2020/10/19
    class loader。JarURLConnection JarEntry周りでのやり方も載っている
  • Javaで使えるオープンソース・キャッシュライブラリ - CLOVER🍀

    最近は、仕事でEhcacheを使っていたり、他にも調べたりすることがあったので、ちょっとJavaで使えるオープンソースなキャッシュライブラリについてまとめてみることにしました。 あ、そんなに大した内容ではないので、ご期待なさらぬよう…。 でまあ、改めて調べてみた感想としては、Ehcacheが現状デファクトになっていることが改めてわかった感じですね。Javaのキャッシュライブラリって、そこそこ数が見つかるんですけど、開発が止まってしまっているものが多かったり、ドキュメントも全然ないというものもけっこう多くて、割とカオス…。 しかも、軽量で気軽に導入できるキャッシュライブラリって、今はない感じですね。Guavaがキャッシュだけで独立していれば…。EhcacheとかInfinispanだと、機能で困ることはないと思いますが、ちょいと大きいですよね。 調べる時に気になるのは、以下のようなところでし

    Javaで使えるオープンソース・キャッシュライブラリ - CLOVER🍀
    HHR
    HHR 2020/08/20
    cache
  • 引数違いのClass#forNameの挙動を確認する - CLOVER🍀

    最近、仕事でのトラブルからクラスローダー周りについて調べたことがあり、何気なく使っていたClass#forNameとかClassLoader#loadClassの挙動について1度確認したくなりました。 そういえば、Class#forNameってforName(String)とforName(String, boolean, ClassLoader)がありますよね? というわけで、簡単な例で確認してみましょう。用意したのは、以下のようなサンプルコード。 ロードされるクラス(C.java) package test; public class C { static { System.out.println("This is C StaticInitializer Block"); } { System.out.println("This is C Initializer Block"); }

    引数違いのClass#forNameの挙動を確認する - CLOVER🍀
    HHR
    HHR 2020/01/21
    class loader
  • 他のロギングライブラリの呼び出しをLog4j2へ転送する+α - CLOVER

    Log4j2は、他のロギングライブラリの呼び出しを、Log4j2に転送するコンポーネントを提供しています。 要は、他のロギングライブラリのふりをしてLog4j2へ流すコンポーネントがあるということですね。 以下のパターンがあります。 Log4j 1.2 → Log4j2 Commons Logging(JCL) → Log4j2 SLF4J → Log4j2 Log4j2 → SLF4J 最後だけ、逆ですね。これが+αの部分です。 それぞれのMaven依存関係は、こちらに網羅されています。 Maven and Ivy Artifacts http://logging.apache.org/log4j/2.x/maven-artifacts.html では、それぞれ簡単に使っていってみます。なお、基的にこれらのAPIを動作させるのに、物のライブラリ(例えばLog4j 1.2のJARファイ

    他のロギングライブラリの呼び出しをLog4j2へ転送する+α - CLOVER
    HHR
    HHR 2018/08/21
    slf4j <--> log4j
  • Mavenでプロジェクト内で使用していないライブラリを調べる - CLOVER🍀

    これも同じく、使ったことのないプラグイン(ゴール)です。 dependency:analyze http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html pom.xmlに依存関係が定義してある割には、実際のコードで使っていないと思われる依存関係を解析してくれます。 こんなpom.xmlがあって… <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://m

    Mavenでプロジェクト内で使用していないライブラリを調べる - CLOVER🍀
    HHR
    HHR 2017/01/30
    dependency:analyze
  • 1