最近Red5の動作上でout of memoryが頻発していい加減いやになったので、調査を実施してみようとおもいます。
手始めにJavaのメモリー動作を確認するために、適当なコンソールアプリを作成しました。
Eclipse用
構成
Run(実行)プロパティーに-Xloggc:gc.logを追加(このGCログをgcviewerでみることにする。)
備考このプログラムをうごかすにはslf4j-api、logback-core、logback-classicの各ライブラリが必要です。いれるのが面倒な場合は、slf4jのimportを削除し、Loggerの記述を削除してください。
App.java
package com.taktod.test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* エントリー
* @author taktod
*/
public class App {
protected static Logger logger = LoggerFactory.getLogger(App.class);
public static void main
(String[] arg
) { while(true) {
print("please input command...");
command = getline();
if(command.equals("gc")) {
}
else if(command.equals("exit")) {
break;
}
else {
System.
out.
println("no such command: " + command
); }
}
}
/**
* 表示補助
* @param str 表示文字列
*/
public static void print
(String str
) { }
/**
* 入力取得補助
* @return 入力文字列
*/
public static String getline
() { try {
return br.readLine();
}
return "";
}
}
}
logback.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<Target>System.out</Target>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %class{0} %method[%line] %msg%n</Pattern>
</layout>
</appender>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<File>sample.log</File>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy/MM/dd HH:mm:ss} [%thread] %-5level %class{0} %method[%line] %msg%n</Pattern>
</layout>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>testlog/sample.%d{yyyy-MM-dd}.zip</FileNamePattern>
<MaxHistory>4</MaxHistory>
</rollingPolicy>
</appender>
<logger name="com.taktod.test">
<level value="INFO" />
</logger>
<root>
<level value="WARN" />
<appender-ref ref="STDOUT" />
<!--<appender-ref ref="FILE" />-->
</root>
</configuration>
最終更新:2010年12月25日 10:02