public abstract class BasicMemoryManager extends Object implements MemoryManager
Modifier and Type | Field and Description |
---|---|
protected AtomicInteger |
averageLoopTime |
protected AtomicBoolean |
averagingEnabled |
protected AtomicLong |
freqCounter |
protected AtomicInteger |
frequency |
protected Queue<Integer> |
intervals |
protected static int |
intervalTail |
protected AtomicLong |
lastGcTime |
protected AtomicInteger |
noGcWindow |
protected AtomicBoolean |
periodicEnabled |
Constructor and Description |
---|
BasicMemoryManager() |
Modifier and Type | Method and Description |
---|---|
org.bytedeco.javacpp.Pointer |
allocate(long bytes,
MemoryKind kind,
boolean initialize)
This method returns
PLEASE NOTE: Cache options
depend on specific implementations
|
void |
collect(INDArray... arrays)
This method detaches off-heap memory from passed INDArray instances, and optionally stores them in cache for future reuse
PLEASE NOTE: Cache options depend on specific implementations
|
int |
getAutoGcWindow()
This method reutrns
|
int |
getAverageLoopTime()
This method returns average time between invokeGCOccasionally() calls
|
MemoryWorkspace |
getCurrentWorkspace() |
long |
getLastGcTime()
This method returns time (in milliseconds) of the las System.gc() call
|
int |
getOccasionalGcFrequency()
This method returns
|
void |
invokeGc()
This method calls for GC.
|
void |
invokeGcOccasionally()
This method calls for GC, and if frequency is met - System.gc() will be called
|
boolean |
isPeriodicGcActive()
This method returns true, if periodic GC is active.
|
void |
memcpy(DataBuffer dstBuffer,
DataBuffer srcBuffer)
This method does memcpy from source buffer to destination buffer
PLEASE NOTE: This method is NOT safe.
|
void |
notifyScopeEntered()
PLEASE NOTE: This method is under development yet.
|
void |
notifyScopeLeft()
PLEASE NOTE: This method is under development yet.
|
void |
purgeCaches()
This method purges all cached memory chunks
|
MemoryWorkspace |
scopeOutOfWorkspaces()
This method temporary opens block out of any workspace scope.
|
void |
setAutoGcWindow(int windowMillis)
This method enables/disables periodic System.gc() calls.
|
void |
setCurrentWorkspace(MemoryWorkspace workspace) |
void |
setOccasionalGcFrequency(int frequency)
Sets manual GC invocation frequency.
|
void |
toggleAveraging(boolean enabled)
This method enables/disables calculation of average time spent within loops
Default: false
|
void |
togglePeriodicGc(boolean enabled)
This method enables/disables periodic GC
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
memset, release
protected AtomicInteger frequency
protected AtomicLong freqCounter
protected AtomicLong lastGcTime
protected AtomicBoolean periodicEnabled
protected AtomicInteger averageLoopTime
protected AtomicInteger noGcWindow
protected AtomicBoolean averagingEnabled
protected static final int intervalTail
public org.bytedeco.javacpp.Pointer allocate(long bytes, MemoryKind kind, boolean initialize)
allocate
in interface MemoryManager
bytes
- kind
- initialize
- public void collect(INDArray... arrays)
collect
in interface MemoryManager
arrays
- public void toggleAveraging(boolean enabled)
MemoryManager
toggleAveraging
in interface MemoryManager
public void purgeCaches()
purgeCaches
in interface MemoryManager
public void memcpy(DataBuffer dstBuffer, DataBuffer srcBuffer)
MemoryManager
memcpy
in interface MemoryManager
public void notifyScopeEntered()
MemoryManager
notifyScopeEntered
in interface MemoryManager
public void notifyScopeLeft()
MemoryManager
notifyScopeLeft
in interface MemoryManager
public void invokeGcOccasionally()
MemoryManager
invokeGcOccasionally
in interface MemoryManager
public void invokeGc()
MemoryManager
invokeGc
in interface MemoryManager
public boolean isPeriodicGcActive()
MemoryManager
isPeriodicGcActive
in interface MemoryManager
public void setOccasionalGcFrequency(int frequency)
MemoryManager
setOccasionalGcFrequency
in interface MemoryManager
public void setAutoGcWindow(int windowMillis)
MemoryManager
setAutoGcWindow
in interface MemoryManager
windowMillis
- minimal time milliseconds between calls.public int getAutoGcWindow()
MemoryManager
getAutoGcWindow
in interface MemoryManager
public int getOccasionalGcFrequency()
MemoryManager
getOccasionalGcFrequency
in interface MemoryManager
public long getLastGcTime()
MemoryManager
getLastGcTime
in interface MemoryManager
public void togglePeriodicGc(boolean enabled)
MemoryManager
togglePeriodicGc
in interface MemoryManager
public int getAverageLoopTime()
MemoryManager
getAverageLoopTime
in interface MemoryManager
public MemoryWorkspace getCurrentWorkspace()
getCurrentWorkspace
in interface MemoryManager
public void setCurrentWorkspace(MemoryWorkspace workspace)
setCurrentWorkspace
in interface MemoryManager
public MemoryWorkspace scopeOutOfWorkspaces()
MemoryManager
scopeOutOfWorkspaces
in interface MemoryManager
Copyright © 2017. All rights reserved.