previous前 Contents 次next
第 4ç« 

プラットフォヌムMBeanサヌバヌずプラットフォヌムMXBeanの䜿甚

この章では、Java Platform, Standard Edition (Java SEプラットフォヌム)の䞀郚ずしお提䟛されるMBeanサヌバヌずMXBeanに぀いお説明したす。MBeanサヌバヌずMXBeanは、モニタリングおよび管理の目的で䜿甚できたす。 Java Management Extensions (JMX)テクノロゞのMBeanずMBeanサヌバヌに぀いおは、第1章「Java SEモニタリングおよび管理の抂芁」に抂芁が蚘されおいたす。 JMXテクノロゞに぀いおは、Java SEプラットフォヌムのJMXテクノロゞのドキュメントに詳しく説明されおいたす。

プラットフォヌムMBeanサヌバヌの䜿甚

MBeanサヌバヌは、管理アプリケヌションからMBeanにアクセスできるようにするMBeanのリポゞトリです。 アプリケヌションは、MBeanに盎接アクセスしたせんが、その䞀意のObjectNameを介しお、MBeanサヌバヌ経由でMBeanにアクセスしたす。 MBeanサヌバヌには、むンタフェヌスjavax.management.MBeanServerが実装されおいたす。

プラットフォヌムMBeanサヌバヌずは、Java SE 5.0で導入されたもので、Java仮想マシン(Java VM)に組み蟌たれたMBeanサヌバヌのこずです。 プラットフォヌムMBeanサヌバヌは、Java VMで実行する、珟圚管理䞋にあるすべおのコンポヌネントで共有できたす。 java.lang.management.ManagementFactoryのメ゜ッドgetPlatformMBeanServerを䜿甚しお、プラットフォヌムMBeanサヌバヌにアクセスしたす。 もちろんjavax.management.MBeanServerFactoryクラスを䜿甚しお独自のMBeanサヌバヌを構築するこずもできたす。 ただし、通垞、MBeanサヌバヌが耇数存圚する必芁はないため、プラットフォヌムMBeanサヌバヌの䜿甚をお薊めしたす。

プラットフォヌムMXBeanぞのアクセス

プラットフォヌムMXBeanは、Java VMのモニタリングおよび管理を実斜するMBeanです。 各MXBeanでは、VM機胜の䞀郚をカプセル化したす。 第 1章「Java SEモニタリングおよび管理の抂芁」の衚 1-1にプラットフォヌムで提䟛するMXBeanをすべお䞀芧で瀺しおいたす。

管理アプリケヌションでは、次の3皮類の方法で、プラットフォヌムMXBeanにアクセスできたす。

  • 盎接アクセス(ManagementFactoryクラス経由)。

  • 盎接アクセス(MXBeanプロキシ経由)。

  • 間接アクセス(MBeanServerConnectionクラス経由)。

次の3぀のセクションでは、プラットフォヌムMXBeanぞのこれら3皮類のアクセス方法に぀いお説明したす。

ManagementFactoryクラスを䜿甚したプラットフォヌムMXBeanぞのアクセス

アプリケヌションは、自身のJava VMず同䞀Java VMで皌働するプラットフォヌムMXBeanのメ゜ッドに察しお盎接呌出しを行うこずができたす。 盎接呌出しには、ManagementFactoryクラスのstaticメ゜ッドを䜿甚できたす。 ManagementFactoryには、getClassLoadingMXBean()、getGarbageCollectorMXBeans()、getRuntimeMXBean()などのさたざたなプラットフォヌムMXBeanにそれぞれ察応するアクセス甚メ゜ッドが甚意されおいたす。 プラットフォヌムMXBeanが耇数存圚する堎合、そのメ゜ッドは怜出したプラットフォヌムMXBeanのリストを返したす。

たずえば、䟋 4-1では、ManagementFactoryのstaticメ゜ッドを䜿甚しおプラットフォヌムMXBeanのRuntimeMXBeanを取埗し、さらにプラットフォヌムMXBeanからベンダヌ名を取埗したす。

䟋 4-1 ManagementFactoryクラスを経由したプラットフォヌムMXBeanぞのアクセス
RuntimeMXBean mxbean = ManagementFactory.getRuntimeMXBean();
String vendor = mxbean.getVmVendor(); 

MXBeanプロキシを経由したプラットフォヌムMXBeanぞのアクセス

アプリケヌションでは、MXBeanプロキシを介しおプラットフォヌムMXBeanメ゜ッドを呌び出すこずもできたす。 これを行うには、staticメ゜ッドManagementFactory.newPlatformMXBeanProxy()を呌び出しお、指定されたMBeanサヌバヌにメ゜ッドの呌出しを転送するMXBeanプロキシ・むンスタンスの䜜成が必芁ずなりたす。 アプリケヌションでは、通垞別のJava VMのプラットフォヌムMXBeanに察するリモヌト・アクセスを可胜ずするプロキシを䜜成したす。

たずえば、䟋 4-2では、䟋 4-1ずたったく同じ凊理を実行したすが、今回はMXBeanプロキシを䜿甚したす。

䟋 4-2 MXBeanプロキシを経由したプラットフォヌムMXBeanぞのアクセス
MBeanServerConnection mbs;
...
// Get a MBean proxy for RuntimeMXBean interface
RuntimeMXBean proxy =
    ManagementFactory.newPlatformMXBeanProxy(mbs,
                                             ManagementFactory.RUNTIME_MXBEAN_NAME,
                                             RuntimeMXBean.class);
// Get standard attribute "VmVendor"
String vendor = proxy.getVmVendor();

MBeanServerConnectionクラスを䜿甚したプラットフォヌムMXBeanぞのアクセス

アプリケヌションは、別の実行䞭のJava VMのプラットフォヌムMBeanサヌバヌに接続されおいるMBeanServerConnectionを経由しおプラットフォヌムMXBeanメ゜ッドを間接的に呌び出すこずができたす。 MBeanServerConnectionクラスのgetAttribute()メ゜ッドを䜿甚しおプラットフォヌムMXBeanの属性を取埗し、MBeanのObjectNameず属性名をパラメヌタずしお指定したす。

たずえば、䟋 4-3では、䟋 4-1および䟋 4-2ず同じゞョブを実行したすが、MBeanServerConnectionを介しお間接的な呌出しを行いたす。

䟋 4-3 MBeanServerConnectionクラスを経由したプラットフォヌムMXBeanぞのアクセス
MBeanServerConnection mbs;
...
try {
  ObjectName oname = new ObjectName(ManagementFactory.RUNTIME_MXBEAN_NAME);
  // Get standard attribute "VmVendor"
  String vendor = (String) mbs.getAttribute(oname, "VmVendor");
} catch (....) {
  // Catch the exceptions thrown by ObjectName constructor
  // and MBeanServer.getAttribute method
  ...
}

Oracle JDKのプラットフォヌム拡匵機胜の䜿甚

Java VMでは、プラットフォヌムに特化した枬定に必芁なむンタフェヌスず管理操䜜を定矩するこずにより管理むンタフェヌスを拡匵できたす。 ManagementFactoryクラスのstaticファクトリ・メ゜ッドは、プラットフォヌム拡匵機胜を備えたMBeanを返したす。

com.sun.managementパッケヌゞには、Oracle JDKのプラットフォヌム拡匵機胜が含たれおいたす。 次の各セクションでは、Oracle JDKのOperatingSystemMXBean実装からプラットフォヌム固有の属性にアクセスする方法の䟋に぀いお説明したす。

MXBeanの各皮属性に察する盎接アクセス

䟋4-4では、Oracle JDKのMXBeanむンタフェヌスの1぀に察しお盎接アクセスを行っおいたす。

䟋 4-4 MXBean属性に察する盎接アクセス
com.sun.management.OperatingSystemMXBean mxbean =
  (com.sun.management.OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();

// Get the number of processors
int numProcessors = mxbean.getAvailableProcessors();

// Get the Oracle JDK-specific attribute Process CPU time
long cpuTime = mxbean.getProcessCpuTime();

MBeanServerConnection経由によるMXBean属性ぞのアクセス

䟋4-5では、Oracle JDKのMXBeanむンタフェヌスの1぀にMBeanServerConnectionクラス経由でアクセスしたす。

䟋 4-5 MBeanServerConnectionを経由したMXBean属性ぞのアクセス
MBeanServerConnection mbs;

// Connect to a running Java VM (or itself) and get MBeanServerConnection
// that has the MXBeans registered in it
...

try {
    // Assuming the OperatingSystem MXBean has been registered in mbs
    ObjectName oname = new ObjectName(ManagementFactory.OPERATING_SYSTEM_MXBEAN_NAME);

    // Get standard attribute "Name"
    String vendor = (String) mbs.getAttribute(oname, "Name");

    // Check if this MXBean contains Oracle JDK's extension
    if (mbs.isInstanceOf(oname, "com.sun.management.OperatingSystemMXBean")) {
        // Get platform-specific attribute "ProcessCpuTime"
        long cpuTime = (Long) mbs.getAttribute(oname, "ProcessCpuTime");
    }
} catch (....) {
    // Catch the exceptions thrown by ObjectName constructor
    // and MBeanServer methods
    ...
}

スレッドの競合およびCPU時間のモニタリング

プラットフォヌムMXBeanのThreadMXBeanでは、スレッドの競合ずスレッドのCPU時間のモニタリングをサポヌトしたす。

Oracle JDKのHotSpot VMでは、スレッドの競合のモニタリングをサポヌトしおいたす。 Java VMでスレッドの競合のモニタリングがサポヌトされおいるかどうかを刀断するには、ThreadMXBean.isThreadContentionMonitoringSupported()メ゜ッドを䜿甚したす。 デフォルト時は、スレッドの競合のモニタリングが無効になっおいたす。 有効にするには、setThreadContentionMonitoringEnabled()メ゜ッドを䜿甚したす。

Oracle JDKのHotSpot VMでは、ほずんどのプラットフォヌムにおいおスレッドのCPU時間の枬定をサポヌトしおいたす。 このむンタフェヌスで発生するCPU時間は、その単䜍の粟床がナノ秒ずなっおいたすが、ここではこれほどの粟床は芁求されたせん。

Java VMがどのスレッドのCPU時間の枬定もサポヌトしおいるこずを刀断するには、isThreadCpuTimeSupported()メ゜ッドを䜿甚したす。 Java VMで珟スレッドのCPU時間を枬定できるかどうかを刀断するには、isCurrentThreadCpuTimeSupported()を䜿甚したす。 スレッドのCPU時間の枬定をサポヌトするJava VMでは、珟スレッドのCPU時間もサポヌトしたす。

Java VMでは、スレッドのCPU時間の枬定を無効にするこずができたす。 スレッドのCPU時間の枬定を有効にするには、isThreadCpuTimeEnabled()メ゜ッドを䜿甚したす。 スレッドのCPU時間の枬定を有効/無効にするには、setThreadCpuTimeEnabled()メ゜ッドを䜿甚したす。

オペレヌティング・システムの管理

プラットフォヌムMXBeanのOperatingSystemでは、次に瀺すような特定のオペレヌティング・システムのリ゜ヌス情報にアクセスするこずができたす。

  • プロセスCPU時間。

  • 物理メモリヌの総容量ず空き容量。

  • 仮想メモリヌの確定容量(プロセスの実行に䜿甚可胜な仮想メモリヌの容量)。

  • スワップ空間の総容量および空き容量。

  • 開いおいるファむル蚘述子の数(Solaris、LinuxたたはMac OS Xプラットフォヌムのみ)。

JConsoleの「MBean」タブでオペレヌティング・システムのMXBeanを遞択するず、そのプラットフォヌムの拡匵機胜を含むすべおの属性ず動䜜が衚瀺されたす。 数倀属性の倀フィヌルドをダブルクリックするこずにより、この数倀属性の長期にわたる倀の倉化をモニタヌできたす。

ロギングの管理

Java SEプラットフォヌムでは、ロギングを目的ずした特殊なMXBean (LoggingMXBeanむンタフェヌス)を提䟛したす。

LoggingMXBeanでは、次のタスクを実行できたす。

  • 指定したロガヌず関連付けられおいるログ・レベルの名前を取埗。

  • 珟圚登録枈みのロガヌのリストを取埗。

  • 指定したロガヌの芪の名前を取埗。

  • 指定の新しいレベルに指定のロガヌを蚭定。

LoggingMXBeanの䞀意のObjectNameは、java.util.logging:type=Loggingです。 このオブゞェクト名は、LogManager.LOGGING_MXBEAN_NAMEに保存されおいたす。

LogManager.getLoggingMXBean()の呌出しにより取埗が可胜な単䞀のグロヌバル・むンスタンスLoggingMXBeanが甚意されおいたす。

MXBeanのLoggingでは、ロガヌ名のリストを説明するLoggerNames属性を定矩したす。 䜿甚䞭のアプリケヌションでロガヌのリストを怜出するには、「MBean」タブでjava.util.loggingドメむンのロギングMXBeanを遞択し、LoggerNames属性の倀フィヌルドをダブルクリックしたす。 ロギングMXBeanでは、次の2皮類の凊理もサポヌトしおいたす。

  • getLoggerLevel: 既定のロガヌのログ・レベルを返したす。

  • setLoggerLevel: 既定ロガヌのログ・レベルを新たなレベルに蚭定したす。

これらの凊理では、ロガヌ名を第1パラメヌタずしお取埗したす。 ロガヌのログ・レベルを倉曎するには、ロガヌ名を第1パラメヌタに入力し、そのレベルの名前をsetLoggerLevel凊理の第2パラメヌタに蚭定したす。

ロヌ・メモリヌの怜出

メモリヌの䜿甚は、メモリヌ・システムの重芁な芁玠ずなりたす。 これは、次の問題の可胜性を瀺唆しおいたす。

  • アプリケヌションの過床のメモリヌ消費。

  • 自動メモリヌ管理システムぞの過床の負荷。

  • 朜圚的なメモリヌ・リヌク。

ロヌ・メモリヌ状態の怜出に䜿甚可胜なメモリヌのしきい倀には、䜿甚量しきい倀ずコレクション䜿甚量しきい倀の2皮類が甚意されおいたす。 ポヌリングたたはしきい倀通知でこれらのしきい倀のいずれかを䜿甚しお、ロヌ・メモリヌ状態を怜出できたす。 これらの抂念に぀いおはすべお次のセクションで説明したす。

メモリヌしきい倀

メモリヌ・プヌルには、䜿甚量しきい倀およびコレクション䜿甚量しきい倀の2皮類のメモリヌしきい倀を蚭定するこずができたす。 これらのしきい倀のどちらか䞀方は、特定のメモリヌ・プヌルでサポヌトされない可胜性がありたす。 䜿甚量しきい倀ずコレクション䜿甚量しきい倀の倀は、JConsoleの「MBean」タブで蚭定できたす。

䜿甚量しきい倀

䜿甚量しきい倀ずは、管理可胜な、䞀郚のメモリヌ・プヌルの属性を意味したす。 オヌバヌヘッドを䜎く抑えた状態でメモリヌの䜿甚状況をモニタヌするこずができたす。 しきい倀を正の倀に蚭定するず、メモリヌ・プヌルは䜿甚量しきい倀をチェックするこずができたす。 䜿甚量しきい倀に0を蚭定するず、この䜿甚量しきい倀のチェック機胜が無効ずなりたす。 デフォルト倀は、Java VMで甚意されおいたす。

Java VMは、メモリヌ・プヌルにおいおほが適切なタむミングで(䞀般的にガベヌゞ・コレクションが発生しおいる間に)、この䜿甚量しきい倀のチェック機胜を実行したす。 各メモリヌ・プヌルは、䜿甚量がしきい倀を超える堎合に垞にその䜿甚量しきい倀の数を増加したす。

䞀郚のメモリヌ・プヌルには、䜿甚量しきい倀が適さないこずから、isUsageThresholdSupported()メ゜ッドを䜿甚しおメモリヌ・プヌルが䜿甚量しきい倀をサポヌトしおいるかどうかを確認したす。 たずえば、䞖代別ガベヌゞ・コレクタ(HotSpot VMの機胜の1぀、第3章「JConsoleの䜿甚」の「ガベヌゞ・コレクション」を参照)においおは、Edenメモリヌ・プヌルからほずんどのオブゞェクトが若い䞖代の方に割り圓おられたす。 なお、Edenプヌルはその容量がいっぱいになるように蚭蚈されおいたす。 Edenメモリヌ・プヌルのガベヌゞ・コレクトにより、そのメモリヌ領域のほずんどが解攟されたす。これは、Edenメモリヌ・プヌルに含たれるオブゞェクトのほずんどが、ガベヌゞ・コレクション時にはアクセス䞍可胜な短呜なオブゞェクトであるず予想されるからです。 このため、Edenメモリヌ・プヌルは、䜿甚量しきい倀をサポヌトするのに適しおいたせん。

コレクション䜿甚量しきい倀

コレクション䜿甚量しきい倀ずは、ガベヌゞ・コレクトされた䞀郚のメモリヌ・プヌルの属性を意味し、この属性は管理できるようになっおいたす。 Java VMでメモリヌ・プヌルのガベヌゞ・コレクトを行うず、そのメモリヌ・プヌル䞭の䞀郚のメモリヌはそれ以埌も匕き続き䜿甚䞭の状態のたたずなりたす。 コレクション䜿甚量しきい倀により、このメモリヌの倀を蚭定するこずができたす。 プヌルでコレクション䜿甚量しきい倀がサポヌトされおいるかどうかを刀断するには、MemoryPoolMXBeanのisCollectionUsageThresholdSupported()メ゜ッドを䜿甚したす。

Java VMは、ガベヌゞ・コレクションを行うずきに、メモリヌ・プヌルにおけるコレクション䜿甚量しきい倀をチェックする堎合がありたす。 なお、このチェック機胜を有効にするには、このしきい倀に正の倀を蚭定したす。 チェック機胜を無効にする堎合は、この倀に0 (デフォルト倀)を蚭定したす。

䜿甚量しきい倀、ずコレクション䜿甚量しきい倀は、いずれも「JConsole」の「MBean」タブで蚭定するこずができたす。

Memory MXBean

プラットフォヌムMemoryMXBeanを䜿甚しおメモリヌのさたざたなしきい倀を管理するこずができたす。 MemoryMXBeanでは、次の4぀の属性を定矩したす。

  • HeapMemoryUsage: 珟圚のヒヌプ・メモリヌの䜿甚状況を瀺す読取り専甚の属性です。

  • NonHeapMemoryUsage: 非ヒヌプ・メモリヌの䜿甚状況を瀺す読取り専甚の属性です。

  • ObjectPendingFinalizationCount: ファむナラむズを保留しおいるオブゞェクトの数を瀺す読取り専甚の属性です。

  • Verbose: ガベヌゞ・コレクション(GC)の冗長トレヌス蚭定を瀺すブヌル型の属性です。 この倀は動的に蚭定するこずができたす。 GCの冗長トレヌスは、Java VMを開始する際に指定した䜍眮に衚瀺されたす。 Hotspot VMのGC冗長出力におけるデフォルトの䜍眮は、stdoutずなりたす。

メモリヌMXBeanでは、明瀺的にガベヌゞ・コレクションを芁求できるよう、凊理gcを1぀サポヌトしおいたす。

メモリヌMXBeanのむンタフェヌスに関する詳现は、java.lang.management.MemoryMXBean仕様に定矩されおいたす。

Memory Pool MXBean

プラットフォヌムMXBeanのMemoryPoolMXBeanでは、メモリヌのしきい倀を管理するために䞀連の凊理を定矩したす。

  • getUsageThreshold()

  • setUsageThreshold(long threshold)

  • isUsageThresholdExceeded()

  • isUsageThresholdSupported()

  • getCollectionUsageThreshold()

  • setCollectionUsageThreshold(long threshold)

  • isCollectionUsageThresholdSupported()

  • isCollectionUsageThresholdExceeded()

各メモリヌ・プヌルには、ロヌ・メモリヌの怜出をサポヌトする䞊で、䜿甚量しきい倀およびコレクション䜿甚量しきい倀の2皮類のメモリヌしきい倀が甚意されおいたす。 これらのしきい倀のどちらか䞀方は、特定のメモリヌ・プヌルでサポヌトされない可胜性がありたす。 詳しくは、MemoryPoolMXBeanクラスのAPIリファレンス・ドキュメントを参照しおください。

ポヌリング

アプリケヌションでは、すべおのメモリヌ・プヌル甚のgetUsage()メ゜ッド、たたは䜿甚量しきい倀をサポヌトするメモリヌ・プヌル甚のisUsageThresholdExceeded()メ゜ッドを呌び出すこずにより、アプリケヌション自䜓のメモリヌ䜿甚量を継続的にモニタヌできたす。

䟋 4-6では、タスクの配眮ず凊理のために蚭けられた専甚のスレッドが䜿甚されおいたす。 各間隔では、メモリヌの䜿甚量に基づき新しいタスクの受け取りや凊理を行うかどうかを刀断したす。 メモリヌの䜿甚量がその䜿甚量しきい倀を䞊回る堎合、そのメモリヌの䜿甚量がしきい倀を䞋回るたで別のVMに未凊理のタスクを再配眮し、新しいタスクを受け取らないようにしたす。

䟋 4-6ポヌリングの䜿甚
pool.setUsageThreshold(myThreshold);
....
boolean lowMemory = false;
while (true) {
  if (pool.isUsageThresholdExceeded()) {
    lowMemory = true;
    redistributeTasks();  // redistribute tasks to other VMs
    stopReceivingTasks();  // stop receiving new tasks
  } else {
    if (lowMemory) { // resume receiving tasks
      lowMemory = false;
      resumeReceivingTasks();
    }
    // processing outstanding task
    ...
  }
  // sleep for sometime
  try {
    Thread.sleep(sometime);
  } catch (InterruptedException e) {
    ...
  }
}      

䟋 4-6では、メモリヌの䜿甚量がその䜿甚量しきい倀を䞀時的に䞋回る堎合ず、2぀の繰返し間においおメモリヌの䜿甚量がしきい倀を䞊回ったたたの状態である堎合の区別がありたせん。 getUsageThresholdCount()から返される䜿甚量しきい倀の数を䜿甚しお、メモリヌの䜿甚量が、2぀のポヌリング間でしきい倀を䞋回る倀を返すかどうかを刀断したす。

代わりにコレクション䜿甚量しきい倀をテストするには、前述ず同じ方法でisCollectionUsageThresholdSupported()、isCollectionThresholdExceeded()、およびgetCollectionUsageThreshold()メ゜ッドを䜿甚したす。

しきい倀通知

MemoryMXBeanでメモリヌ・プヌルの䜿甚量がそのしきい倀に到達しおいるか、䞊回っおいるこずが怜出されたずきは、䜿甚量しきい倀超過通知が発行されたす。 䜿甚量がしきい倀を䞋回り、ふたたび䞊回るたで、MemoryMXBeanは、別の䜿甚量しきい倀超過通知を発行したせん。 同様に、ガベヌゞ・コレクション埌のメモリヌの䜿甚量が、コレクション䜿甚量しきい倀を䞊回る堎合、MemoryMXBeanでは、コレクション䜿甚量しきい倀超過通知を発行したす。

䟋 4-7は、䟋 4-6ず同じロゞックを実装しおいたすが、ロヌ・メモリヌ状態を怜出するために䜿甚量しきい倀通知を䜿甚したす。 通知を受け取るず、リスナヌは、未凊理タスクの再配眮、新タスクの受け入れ拒吊、新タスクの再受け入れなどのアクションを実行するために別のスレッドの通知を行いたす。

䞀般に、以埌の通知の遅れを回避するために、凊理量を最小限にするhandleNotificationメ゜ッドを蚭蚈する必芁がありたす。 時間を浪費するアクションは別のスレッドにおいお実行するようにしおください。 耇数のスレッドで通知リスナヌを同時に呌び出すこずができるため、リスナヌは、タスクが正垞に実行されるようにそのタスクを同期させる必芁がありたす。

䟋 4-7しきい倀通知の䜿甚
class MyListener implements javax.management.NotificationListener {
  public void handleNotification(Notification notification, Object handback)  {
    String notifType = notification.getType();
    if (notifType.equals(MemoryNotificationInfo.MEMORY_THRESHOLD_EXCEEDED)) {
      // potential low memory, redistribute tasks to other VMs & stop receiving new tasks.
      lowMemory = true;
      notifyAnotherThread(lowMemory);
    }
  }
}

// Register MyListener with MemoryMXBean
MemoryMXBean mbean = ManagementFactory.getMemoryMXBean();
NotificationEmitter emitter = (NotificationEmitter) mbean;
MyListener listener = new MyListener();
emitter.addNotificationListener(listener, null, null);

このメモリヌ・プヌルで䜿甚量しきい倀をサポヌトするものず仮定する堎合、しきい倀(倀を䞊回るずアプリケヌションで新タスクを受け入れなくなるしきい倀)をある倀(バむト数衚蚘)に蚭定するこずができたす。

pool.setUsageThreshold(myThreshold);

このあず、䜿甚量しきい倀の怜出が有効ずなり、MyListenerで通知が凊理されたす。

previous前 Contents 次next

Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved.