質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

3回答

941閲覧

Javaアプリのメモリ上の値を、コマンドで取得

131505_01180109

総合スコア7

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

1クリップ

投稿2019/07/26 07:36

編集2019/07/26 07:44

前提・実現したいこと

Javaによるアプリケーションの開発をしています。
Spring Bootによるバッチアプリケーションです。

将来的にJARの形にまとめて、CentOS上でサービスとして起動できるようにします。

そして、サービスとして動いているアプリケーションの中
メモリ上で保持されている値があるのですが、それを外側から取得したい、
というのが今回実現したいポイントです。
(取得したい値は、おそらくList形式になっています)

※ここまでの内容は決定している事項なので、変更の可能性はありません。

分からないこと

メモリ上で保持しているものを外から取るとなると、
それが可能なコマンドを用意すると良いのかなぁと思いましたが、
実現の方法がイマイチ思い浮かびません・・・。

CentOS上でJavaアプリケーションのメモリ上の値を取得できる「コマンド」を作るためにはどうすれば良いでしょうか。

他にもメモリ上の値取得の方法は有るとは思います(私が思い浮かばないだけで・・・)。
もし何かもっと良い手法があれば、教えていただきたいです!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

JVMのプロセスIDを起動時に保存して、ごにょごにょいじるとできそうな気がします。

Linuxで他プロセスのメモリを読み書きする方法というのもあるようですが、JVMのメモリ管理を
しらないと根本的には、さわれないような・・・

Flight Recorderやら、javaの標準ユーティリティでもいろいろできそうな気はします。
※JVM、メモリ、監視とかでググるといろいろでてくると思います。

あと、直接的な回答にはなりませんが

CentOS上でサービスとして起動できるようにします。

サービスというのが、常駐するサービスという前提ですが、
常駐しているのであれば、そのサービスに対して、その欲しい情報を返すAPIを用意するだけで解決できそうな気もします。

投稿2019/07/26 08:24

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

131505_01180109

2019/07/26 08:58

ご回答ありがとうございます。 JVMのしくみは軽く調べたことがあるのですが、 もう少しちゃんと学習しようと思います。 仰る通り、常駐型サービスになる予定です。 叩いたら欲しい値を返してくれるようなAPIを用意する、というのは とても良い方法だと思いました! ただ・・・どうすればその仕組みを実現できるか、あんまりピンときていません。 別のJavaアプリを作成するような感じになるのでしょうか。
guest

0

自己解決

本件ですが、momon-gaさんからいただいた回答をもとに、
必要なメモリ情報を返すAPIを実装することで実現させようと思います。

momon-gaさん、boochnichさん、回答ありがとうございました。

投稿2019/07/29 02:15

131505_01180109

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

JMX(Java Management Extensions)を使うのが一手かと。

投稿2019/07/28 12:43

boochnich

総合スコア194

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

131505_01180109

2019/07/29 01:02

なるほど、こうやってメモリの情報を取得する方法もあるんですね・・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問