Package oshi.driver.windows.wmi
Class Win32ProcessCached
java.lang.Object
oshi.driver.windows.wmi.Win32ProcessCached
@ThreadSafe public final class Win32ProcessCached extends java.lang.Object
Utility to query WMI class
Win32_Process
using cache-
Method Summary
Modifier and Type Method Description java.lang.String
getCommandLine(int processId, long startTime)
Gets the process command line, while also querying and caching command lines for all running processes if the specified process is not in the cache.static Win32ProcessCached
getInstance()
Get the singleton instance of this class, instantiating the map which caches command lines.
-
Method Details
-
getInstance
Get the singleton instance of this class, instantiating the map which caches command lines.- Returns:
- the singleton instance
-
getCommandLine
public java.lang.String getCommandLine(int processId, long startTime)Gets the process command line, while also querying and caching command lines for all running processes if the specified process is not in the cache.When iterating over a process list, the WMI overhead of querying each single command line can quickly exceed the time it takes to query all command lines. This method permits access to cached queries from a previous call, significantly improving aggregate performance.
- Parameters:
processId
- The process ID for which to return the command line.startTime
- The start time of the process, in milliseconds since the 1970 epoch. If this start time is after the time this process was previously queried, the prior entry will be deemed invalid and the cache refreshed.- Returns:
- The command line of the specified process. If the command line is
cached from a previous call and the start time is prior to the time
it was cached, this method will quickly return the cached value.
Otherwise, will refresh the cache with all running processes prior to
returning, which may incur some latency.
May return a command line from the cache even after a process has terminated. Otherwise will return the empty string.
-