Related site



Blog - 最新エントリー

GC overhead limit exceeded

カテゴリ : 
Java
執筆 : 
kabukimomo 2008-11-22 10:43
大量メモリを使用するJava常駐プロセスで、十分にヒープサイズ(-Xms -Xmx)を設定したが、「OutOfMemoryError」が発生した。Jconsoleで確認したが、最大ヒープサイズまで達していなかった。
 
「Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded」
 
ん?GC overhead limit exceededってなんだよ。
WEBで調べると、GCの仕様であることがわかった(以下)。
 
Please see
 
オプションに「-XX:-UseGCOverheadLimit」を設定し問題を回避しました。
 
ただ真の解決策かというと疑問だ。
 
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (26)

Java ゼロサプレス(0サプレス)

カテゴリ : 
Java
執筆 : 
kabukimomo 2008-11-5 0:26
0パディングの話はしましたが、
0サプレスの話もあると思いましたので、
サンプルを公開します。
公開といってもメモ程度ですけど。。。
参考になれば幸いです。

もっと良い簡単な方法があれば、コメント頂けると嬉しいです。


 public static String zeroSupPress(String numStr) {

   String tmp = null;
   Pattern ptn
    = Pattern.compile("^0+([0-9]+|[0-9]+[.]+[0-9]+)");
   Matcher m = ptn.matcher(numStr);
 
   if (m.matches()) {

     tmp = m.group(1);

   } else {

     try {
       Double.parseDouble(numStr);
       tmp = numStr;
     } catch (NumberFormatException nfe) {}
   }
   return tmp;
 }
 
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (21)

JSTQB

カテゴリ : 
プロジェクト管理
執筆 : 
kabukimomo 2008-10-31 1:06
JSTQB テスト技術者資格認定

ある程度開発している人がこのシラバスを見ると、
ものすごく共感できる内容、意外と後輩に説明できてなかったんだな
と実感してしまった。

シラバス72ページ印刷して、電車で読んでますw

試験は、来年2月か・・・受けようかな(21000円)


 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (24)

文字列の先頭文字を大文字に変換(Java)

カテゴリ : 
Java
執筆 : 
kabukimomo 2008-10-27 12:33
 
指定した文字列の先頭文字を大文字に変換する方法です。
あまり使用頻度はなさそうですが、参考にどうぞ。

public static String upperCaseTop(String str) {
 
  StringBuilder sb = new StringBuilder(str);

  String initial = sb.substring(0, 1);
  sb = sb.delete(0, 1);
  initial = initial.toUpperCase();
  sb.insert(0, initial);
  return sb.toString();

}
 
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (87)
データクラス仕様書から
Javaソースファイルを生成するツールを配布します。

「データクラスを1から手作業でコーディングするのはもう止めましょう」
と思っている方は沢山いるはずです。

ダウンロードは、こちらへ
 
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (95)

心に響いた詩

カテゴリ : 
その他
執筆 : 
kabukimomo 2008-10-21 1:43
1.何をやっても うまくはいかず
  避けて逃げ出すことばかり
  思案に暮れた日々もある
  疲れた体と心をかかえ
  留まることさえ出来ぬ街
  切なさ哀しさ心に刻み
  折り合いなだめて越えて来た
  石ころばかりのやぶれ道
  でも 愚痴も言わずに
  文句も言わず
  共に歩いてくれた人
  ああこの人に 
  俺の力で幸せを
  運んでやりたい
  ただ それだけが
  それだけが
  ささやかな夢

2.抱えきれない 哀しみ背負い
  先も見えない暗闇を
  這いずり回った日々もある
  疲れた体と心をかかえ
  振り向くことさえ出来ぬ街
  辛さと痛みを心に刻み
  折り合いなだめて越えて来た
  石ころばかりのやぶれ道
  でも 笑みを浮かべて
  涙もみせず
  共に歩いてくれた人
  ああこの人に
  俺の力で幸せを
  運んでやりたい
  ただ それだけが 
  それだけが
  ささやかな夢

3.開きなおれぬ 弱さをかかえ
  損な役割こなしても
  心の晴れぬ日々ばかり
  疲れた体と心をかかえ
  眠ることさえも出来ぬ街
  辛さと痛みを心に刻み
  折り合いなだめて越えて来た
  石ころばかりのやぶれ道
  でも 後ろも向かず 
  ただうなずいて
  共に歩いてくれた人
  ああこの人に 
  俺の力で幸せを
  運んでやりたい
  ただ それだけが 
  それだけが
  ささやかな夢

 作者名「ポエット・M
 
 
ABCオロチサーバーでは、
なんかXML配信に広告表示部分が設定され、なぜかエラーとなります。
 
ABCオロチサーバは、ファイル名に「frame」という接頭辞があると、
広告表示を設定しないということなので・・・
 
修正(1)
/public_html/modules/d3blog
@index.php

上記ファイルをコピーして、
「frame_index.php」をというファイル名で同場所に配置(中身も同じ)
 
修正(2)
/xoops_trust_path/modules/d3blog/include
@header.inc.php
 
【変更前】
$feeder['rss'] = sprintf('%s/modules/%s/index.php?page=rss', XOOPS_URL, $mydirname4show);
$feeder['rdf'] = sprintf('%s/modules/%s/index.php?page=rdf', XOOPS_URL, $mydirname4show);
 
【変更後】
$feeder['rss'] = sprintf('%s/modules/%s/frame_index.php?page=rss', XOOPS_URL, $mydirname4show);
$feeder['rdf'] = sprintf('%s/modules/%s/frame_index.php?page=rdf', XOOPS_URL, $mydirname4show);
 
この対応で平成ハッカーズ(当サーバ)は運用しております。
 
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (33)

開発マイルストーン

カテゴリ : 
プロジェクト管理
執筆 : 
kabukimomo 2008-10-15 22:39
お勧めフリーソフトの紹介です。
 
良さげなプロジェクト管理ソフトを発見しました。
 
開発マイルストーン
 
ホームページより抜粋
 マイルストーンは一つの指標です。プロジェクトでは、達成したい目標へ向かってまずステップごとに段階を分け、計画を立てて実施します。その結果の検証をして、これをもって修正された新たな計画を立て再び実施を行います。このようなサイクルでプロジェクトを進めていく上で重要な指標がマイルストーンです。
 
ちょっと親しい上司に教えてあげたいです。
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (58)
範囲指定(rownum)による大量レコードの検索(Oracle)
 
上記を考える前に別のアプローチ方法を記載します。
 
【問題案件】
大量レコードを取得し、1件ずつバッチ処理を実行する。
大量レコードを取得し、データクラスに格納する際に「Out Of Memory」が発生する。
 
【対応方法】
結果セット(ResultSet)から1件ずつ処理を行います。

結果セットは、メモリ上に展開された仮想的な部分テーブルです。
内部的に現在のレコード位置を表わす「レコードポインタ」ですので、
結果セット(ResultSet)の内容を読み込む場合には、
このポインタを移動させながら1レコードずつ読み込んでいきます。
 
参考ページはここ

ResultSet rs = stmt.executeQuery();
executeQuery()メソッドを実行して、
タスクマネージャーを見るとわずかのメモリ消費量が増えただけらしい。


 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (92)
TABLE: T_ORDER_LIST

X,Y,Zは、任意の値、
シチュエーションは、大量レコードを想定している。
 
 
データベースは「Oracle」が前提。
 
「商品コード」をGROUP BYで検索したいが、全情報を取得すると、
クライアント(Javaアプリ)にてメモリを大量に消費するため、
情報を数回に分けて取得し処理したい。
 
 
SELECT * FROM (
  SELECT RES.*, ROWNUM AS RN FROM (
    SELECT ITEM_CODE FROM T_ORDER_LIST
      GROUP BY ITEM_CODE ORDER BY ITEM_CODE
    ) RES
  )
) WHERE 1(※1) >= RN AND RN <= 1000(※1);

または、) WHERE BETWEEN RN 1 AND 1000; 

 
※1 この引数の決定は、アプリケーション側で制御すればよい。
 
 例)
 1~1000
 2001~3000
 3001~4000
 
 
  • コメント (0)
  • トラックバック (0)
  • 閲覧 (104)