毎日1段のコード、署名
1483 ワード
package tmp
import java.lang.management.ManagementFactory
/**
* Created by fhqplzj on 17-1-20 at 9:56.
*/
object pro4 {
val memory: Int = inferDefaultMemory()
def inferDefaultCores(): Int = Runtime.getRuntime.availableProcessors()
def inferDefaultMemory(): Int = {
val ibmVendor = System.getProperty("java.vendor").contains("IBM")
var totalMb = 0
try {
val bean = ManagementFactory.getOperatingSystemMXBean
if (ibmVendor) {
val beanClass = Class.forName("com.ibm.lang.management.OperatingSystemMXBean")
val method = beanClass.getDeclaredMethod("getTotalPhysicalMemory")
totalMb = (method.invoke(bean).asInstanceOf[Long] / 1024 / 1024).toInt
} else {
val beanClass = Class.forName("com.sun.management.OperatingSystemMXBean")
val method = beanClass.getDeclaredMethod("getTotalPhysicalMemorySize")
totalMb = (method.invoke(bean).asInstanceOf[Long] / 1024 / 1024).toInt
}
} catch {
case _: Exception =>
totalMb = 2 * 1024
println("Failed to get total physical memory. Using " + totalMb + " MB")
}
math.max(totalMb - 1024, 1024)
}
def checkWorkerMemory(): Unit = {
if (memory <= 0) {
val message = "Memory is below 1MB, or missing a M/G at the end of the memory specification?"
throw new IllegalStateException(message)
}
}
}