Runtime
クラス(freeMemory()
、totalMemory()
、およびgc()
)を使用すると、MBを超えるメモリ(つまり1,000,000バイト)が得られます。
しかし、オンラインコンパイラで同じコードを実行すると、使用されているメモリがKB単位(つまり1000バイト)で表示されます。これは大きな違いです。
これは、Runtime
がプログラムで使用される実際のメモリを表示しないことを意味します。
プログラムで使用される実際のメモリを計算する必要があります。これらのオンラインコンパイラがプログラムで使用されるメモリを計算する方法は何ですか?
まず、コードの実行前に使用されるメモリ、つまりコードの最初の行を計算します。
long beforeUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
コードの実行後に使用されるメモリを計算します。
long afterUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
その後、次のことができます。
long actualMemUsed=afterUsedMem-beforeUsedMem;
プログラムで使用される実際のメモリを提供します。
さらにメモリ分析を行うには、 jvisualvm のようなプロファイラツールが最適です。
Ubuntuでtopコマンドを使用して、Javaプログラムを実行中にCPU使用率またはメモリ使用率%を確認できます。
topコマンドは、これらの多くの情報を提供します。
PID
USER
PR
NI
VIRT
RES
SHR
S
%CPU
%MEM
TIME+ COMMAND
top
と入力し、端末でEnterキーを押して、コマンドセクションでJava.