Java > TIPS


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

JMeter
 リスナーのConfigureを精査すること







OutOfMemoryErrorが発生するタイミング

New領域が溢れた場合
New領域のオブジェクトはある程度の期間存在し続けるとOld領域へ移動される。しかし、移動する条件に達する前のオブジェクトで溢れる場合がある。
※JavaVMはNew領域が溢れそうな際ある程度New領域を広げる処理を行っているようだが、それでも溢れた場合はOutOfMemoryErrorとなる。
Old領域が溢れた場合
参照されつづけるオブジェクトが大量に存在する場合に溢れる。
Cヒープが溢れた場合
Javaのスレッドが大量に作成された場合に溢れる。
Cヒープが溢れてOutOfMemorryErrorが発生した場合、スタックトレースの先頭が「Native Method」である。
http://www.itmedia.co.jp/enterprise/articles/0907/10/news002.html
http://d.hatena.ne.jp/oknknic/20111203/1322892986
調査の難しい「OutOfMemoryError」事例、5選(http://www.atmarkit.co.jp/ait/articles/1003/11/news091.html
スレッド数はOSのパラメタで設定されており、それが大きな値で設定されている場合に発生する。
Linuxの場合、「cat /proc/sys/kernel/threads-max」で確認することができ、「/etc/sysctl.conf」ファイルの「kernel.threads-max」で設定される。
http://d.hatena.ne.jp/Fiore/20080310/1205155154
Linuxで起動中のJavaプロセスのスレッド数を確認する方法に「ps -efL | grep -e java | grep -v grep | wc -l」等がある。
http://d.hatena.ne.jp/rx7/20101219/p1




半角英字
^[a-zA-Z]+$
ex => abcdefghijklmnopqrstuvwxyz

半角数字
^[0-9]+$
ex => 0-9

半角記号
^[ -/:-@\[-\`\{-\~]+$
ex => 半角空白!”#$%&’()*+-.,/:;<=>?@[\]^_`{|}~

半角英数字
^[a-zA-Z0-9]+$
ex => abcdefghijklmnopqrstuvwxyz0123456789

半角英数字記号
^[a-zA-Z0-9 -/:-@\[-\`\{-\~]+$
ex => abcdefghijklmnopqrstuvwxyz0123456789半角空白!”#$%&’()*+-.,/:;<=>?@[\]^_`{|}~

半角カタカナ
<span class="goog_qs-tidbit goog_qs-tidbit-0">^[。-゚+]+$</span>
ex => ー。「」、・ヲァィゥェォャュョッタアイウエオカキクケコサシスセソミチツテトナニヌネノハヒフヘホマムメモヤユヨラリルレロワン゙゚

ひらがな
^[ぁ-ゞ]+$
ex => あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをんぁぃぅぇぉっゃゅょがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽゑヴ繧輔v繧吶z゛゜ゝゞ

カタカナ
^[ァ-ヶ]+$
ex => ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ

漢字
^[一-龠]*$
全角文字
^[^ -~。-゚]+$
半角以外としているのがポイント。

桁数を指定(1桁から5桁)
^[a-zA-Z0-9]{5,10}$
5桁以上の繰り返し
^[a-zA-Z0-9]{5,}$
5桁以下の繰り返し
^[a-zA-Z0-9]{1,5}$
定数(trueもしくはfalse)
^true$|^false$


  • システムプロパティのコンソール出力

public static void viewSystemProperties() {
	
	// システムプロパティを全て出力
	// インナークラスとしてそのまま持っていけます
	new Object() {
		void viewSystemProperties() {
			java.util.Properties p = System.getProperties();
			java.util.TreeMap<Object, Object> map = new java.util.TreeMap<Object, Object>();
			map.putAll(p);
			java.util.Iterator<Object> itr = map.keySet().iterator();
			while (itr.hasNext()) {
				String key = (String) itr.next();
				String value = (String) map.get(key);
				System.out.println(key + "=" + value);
			}
		}
	}.viewSystemProperties();
}








EOF