What is the difference between free and vmstat commands?
From the manpages: free, vmstat
free displays the total amount of free and used physical and swap memory in the system, as well as the buffers used by the kernel. The shared memory column should be ignored; it is obsolete.
vmstat reports information about processes, memory, paging, block IO, traps, and cpu activity.
The first report produced gives averages since the last reboot. Additional reports give information on a sampling period of length delay. The process and memory reports are instantaneous in either case.
Related videos on Youtube
NaaleinGrohiik
Updated on September 18, 2022Comments
-
NaaleinGrohiik over 1 year
In hopes to better understand MVVM I decided to redo one of my Android projects implementing the architecture.
One of the activities uses the Zxing library to scan a QR code. Using Zxing's event handler I would like to pass the scanned result to my viewModel to check for example if the result is a "product"(this is a QR code I generate following a product class) or not. If the the result is a product it will show a dialogue with the result asking the user if they want to continue scanning or save the product, if it is not a product then it shows a dialogue with the result and a cancel button.
Now the issue here is that I don't know how to properly pass the data from Zxing's handler to the viewModel. Below attached my activity.
class QRreader_Activity : AppCompatActivity(), ZXingScannerView.ResultHandler, IQRreader{ override fun isProduct(ProductDetail: String) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } override fun isNotProduct(ScannedText: String) { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } lateinit var mScannerView: ZXingScannerView var data: String="test" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_qrreader) val bReturn: ImageButton = findViewById(R.id.ic_return) bReturn.setOnClickListener { onBackPressed() } ActivityCompat.requestPermissions(this@QRreader_Activity, arrayOf(Manifest.permission.CAMERA), 1) val flashlightCheckBox = findViewById<CheckBox>(R.id.flashlight_checkbox) val contentFrame = findViewById<ViewGroup>(R.id.content_frame) mScannerView = object : ZXingScannerView(this) { override fun createViewFinderView(context: Context): IViewFinder { return CustomViewFinderView(context) } } contentFrame.addView(mScannerView) flashlightCheckBox.setOnCheckedChangeListener { compoundButton, isChecked -> mScannerView.flash = isChecked } } public override fun onResume() { super.onResume() mScannerView.setResultHandler(this) // Register ourselves as a handler for scan results. mScannerView.startCamera() // Start camera on resume } public override fun onPause() { super.onPause() mScannerView.stopCamera() // Stop camera on pause } override fun onBackPressed() { super.onBackPressed() val intent = Intent(this, MainActivity::class.java) startActivity(intent) finish() } //This is where ZXing provides the result of the scan override fun handleResult(rawResult: Result) { Toast.makeText(this,""+rawResult.text,Toast.LENGTH_LONG).show() } private class CustomViewFinderView : ViewFinderView { val PAINT = Paint() constructor(context: Context) : super(context) { init() } constructor(context: Context, attrs: AttributeSet) : super(context, attrs) { init() } private fun init() { PAINT.color = Color.WHITE PAINT.isAntiAlias = true val textPixelSize = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, TRADE_MARK_TEXT_SIZE_SP.toFloat(), resources.displayMetrics) PAINT.textSize = textPixelSize setSquareViewFinder(true) } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) drawTradeMark(canvas) } private fun drawTradeMark(canvas: Canvas) { val framingRect = framingRect val tradeMarkTop: Float val tradeMarkLeft: Float if (framingRect != null) { tradeMarkTop = framingRect.bottom.toFloat() + PAINT.textSize + 10f tradeMarkLeft = framingRect.left.toFloat() } else { tradeMarkTop = 10f tradeMarkLeft = canvas.height.toFloat() - PAINT.textSize - 10f } canvas.drawText(TRADE_MARK_TEXT, tradeMarkLeft, tradeMarkTop, PAINT) } companion object { val TRADE_MARK_TEXT = "" val TRADE_MARK_TEXT_SIZE_SP = 40 } }
}
-
Alaa Ali over 9 yearsWhat exactly is your question? The number that appears under the column
free
in thevmstat
command is the same number underfree
in thefree
command. Same goes forbuffers
andcached
. -
nux over 9 yearsaren't the same concerning memory usage ?
-