1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169
|
package org.tanukisoftware.wrapper.test;
/*
* Copyright (c) 1999, 2022 Tanuki Software, Ltd.
* http://www.tanukisoftware.com
* All rights reserved.
*
* This software is the proprietary information of Tanuki Software.
* You shall use it only in accordance with the terms of the
* license agreement you entered into with Tanuki Software.
* http://wrapper.tanukisoftware.com/doc/english/licenseOverview.html
*
*
* Portions of the Software have been derived from source code
* developed by Silver Egg Technology under the following license:
*
* Copyright (c) 2001 Silver Egg Technology
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sub-license, and/or
* sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*/
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
/**
*
*
* @author Tanuki Software Development Team <support@tanukisoftware.com>
*/
public class Memory implements Runnable
{
private static Memory c_theInstance;
private Thread m_runner;
/*---------------------------------------------------------------
* Constructor
*-------------------------------------------------------------*/
private Memory()
{
// Start the runner
m_runner = new Thread( this, "runner" );
m_runner.start();
}
/*---------------------------------------------------------------
* Runnable Method
*-------------------------------------------------------------*/
public void run()
{
long startTime = System.currentTimeMillis();
long lastTest = startTime;
try
{
File file = new File( "../logs/memory.log" );
System.out.println( Main.getRes().getString( "Writing memory Log to: {0}", file ) );
Writer writer = new FileWriter( file );
try
{
writer.write( Main.getRes().getString( "--> Starting Memory Log\n" ) );
writer.flush();
while( m_runner != null )
{
long now = System.currentTimeMillis();
System.out.println( Main.getRes().getString( "Running for {0}ms...", new Long( now - startTime ) ) );
if ( now - lastTest > 15000 )
{
Runtime rt = Runtime.getRuntime();
System.gc();
long totalMemory = rt.totalMemory();
long freeMemory = rt.freeMemory();
long usedMemory = totalMemory - freeMemory;
writer.write( Main.getRes().getString( "total memory=" ) + pad( totalMemory, 10 )
+ Main.getRes().getString( ", used=" ) + pad( usedMemory, 10 )
+ Main.getRes().getString( ", free=" ) + pad( freeMemory, 10 ) + "\n" );
writer.flush();
lastTest = now;
}
try
{
Thread.sleep( 250 );
}
catch ( InterruptedException e )
{
}
}
writer.write( Main.getRes().getString( "<-- Stopping Memory Log\n" ) );
writer.flush();
}
finally
{
writer.close();
}
}
catch ( IOException e )
{
e.printStackTrace();
}
}
/*---------------------------------------------------------------
* Methods
*-------------------------------------------------------------*/
private static final String PADDING = " ";
private String pad( long n, int len )
{
String s = Long.toString( n );
int sLen = s.length();
if ( sLen < len )
{
s = s + PADDING.substring( 0, len - sLen );
}
return s;
}
/*---------------------------------------------------------------
* Main Method
*-------------------------------------------------------------*/
public static void main(String[] args)
{
System.out.println( Main.getRes().getString( "Memory Tester Running..." ) );
c_theInstance = new Memory();
// Register a shutdown hook.
Runtime.getRuntime().addShutdownHook( new Thread( "shutdown-hook" )
{
public void run()
{
System.out.println(Main.getRes().getString( "Stopping..." ) );
Thread runner = c_theInstance.m_runner;
// Tell the main thread to stop.
c_theInstance.m_runner = null;
// Wait for the thread to actually stop cleanly.
try
{
runner.join();
}
catch ( InterruptedException e )
{
}
System.out.println(Main.getRes().getString( "Stopped." ) );
}
} );
}
}
|