001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.q2.cli; 020 021import org.jpos.q2.CLICommand; 022import org.jpos.q2.CLIContext; 023 024/** CLI command that prints JVM heap usage statistics; supports {@code --gc}. */ 025public class MEM implements CLICommand 026{ 027 /** Default constructor; no instance state to initialise. */ 028 public MEM() {} 029 public void exec(CLIContext cli, String[] args) throws Exception 030 { 031 if (args.length > 1 && "--gc".equals(args[1])) 032 { 033 System.gc(); 034 } 035 Runtime r = Runtime.getRuntime(); 036 StringBuilder sb = new StringBuilder(); 037 sb.append("total="); 038 sb.append(r.totalMemory()); 039 sb.append(" free="); 040 sb.append(r.freeMemory()); 041 sb.append(" in-use="); 042 sb.append(r.totalMemory() - r.freeMemory()); 043 cli.println(sb.toString()); 044 } 045} 046