• 締切済み

メモリー開放できていないのでしょうか?

okure_donchanの回答

回答No.2

>Commitタイミングは短くしましたが変わらずです。DBの共有メモリ関係も疑っています。 先日私の方も大量データ取込をJavaで実行するというのを行いましたが、matchoriのように件数を取り込むうちにパフォーマンスが下がっていきました。確かにCommitは関係なさそうですね・・・ いい加減仕事にならなかったので、大量データをいったんDBのテーブルレイアウトとのCSVにプ変換するPGを作成して、DBのツールでインポートしましたが・・・ プログラムの組みかたがいけないのかも知れないですね、SQL発行部分とか、コネクション管理とか・・・

関連するQ&A

  • Javaのメモリアロケーションについて

    Javaのメモリアロケーションについて質問です。 物理メモリ512MBのPCで、ある会計システムのデータ読込みの際にOutofMemoryのエラーが発生する為、Javaのメモリヒープサイズを Javaコントロールパネル内「Javaランタイムパラメーター」欄にXmx128mを設定しました。 読み込むデータが大きく、Xmx128mでもOutofMemoryとなるため、ヒープサイズに更に大きな値を設定するべくPCの物理メモリ1GB追加しました。 搭載メモリ1.5GBで使用可能メモリ1GBになりましが、Xmx256mを設定すると「アプリケーションをロードできませんでした」というエラーが発生し会計システムを起動することができません。 メモリを増やしたにも関わらず、どうして大きなメモリヒープサイズを設定できないのでしょうか? Javaを最インストールする他方法はないのでしょうか? どなたかご教授お願いいたします。 設定値:-Xms64m -Xmx256m Javaバージョン:1.6.0Update3 OS:WindowsXP IE:6

  • メモリースティックの種類

    カーナビにメモリースティックを差し込むところがありまして、主にMP3データをナビ内のHDDに移したりそのままプレイしたりするのですが メモリースティックはProにもマジックゲートにも対応していないとのことです。 また、所有のパソコンにもメモリースティックの差込口がついていて、そちらは マジックゲートには対応していないとのことです。 そこで、質問なのですが、私はどのメモリースティックを購入すればよいのでしょうか? MP3データが大量にあるため、なるべく大容量がいいのですが、Proでないものだと128Mまでしかないのでしょうか?

  • Linux系OSのメモリの解放について

    お世話になります。 CentOS6.4を使ってPHPアプリを動かしています。 結構メモリを消費するアプリなので、 使っているうちにOutOfMemoryになることがあります。 ※正常終了する場合もあります。 正常に終了しようがOutOfMemoryになろうが、 大量にメモリを確保した後は、そのまま解放されていないように見えます。 例えば、freeコマンドで見たときにに usedが減りません。 【例】 アプリケーション実行前 # apachectl restart # free total used free shared buffers cached Mem: 16334660 472788 15861872 0 105700 120124 -/+ buffers/cache: 246964 16087696 Swap: 2047992 0 2047992 ここでアプリケーション実行し正常に終了。 # free total used free shared buffers cached Mem: 16334660 1754276 14580384 0 106836 120484 -/+ buffers/cache: 1526956 14807704 Swap: 2047992 0 2047992 apacheを再起動すればusedは減るのですが、 他にusedになっているメモリを開放する方法はあるのでしょうか? また、どのようなメカニズムで解放されないのか教えていただけるとありがたいです。 よろしくお願いします。

  • Postgresのデータ許容量について

    お世話になります。 現在、JAVAを利用した開発をPostgres8.3で行おうと考えております。 そこで以下の状態で、Postgresを運用可能かどうかで悩んでいます。 保持するデータは以下の規模を想定しています。 ・TBLは5~10(各)。カラム数は1TBLあたり、5~10程度 ・データは月次60000件、年間72万件のデータを数年間保持する必要あり。 仕様としては、毎月、20社、各3000件のデータをPostgresに取り込み。 JAVAの画面から帳票(グラフ等)を各社ごとに出力するといった仕様です。 何ヶ月、何年と運用を重ねていくながで数十万、数百万のデータによって、アプリケーションの処理が極端に重くなったりデータ容量の上限に 達するといったことはあるのでしょうか? また、もしそうならば、どれくらいのデータ容量ならば、ユーザーに とって利用に絶えられるシステム運用が可能なのでしょうか? 私自身が、DBに詳しくないため判断しかねています。一応インターネット で調べてPostgresの容量が2GBだということはわかったのですが、基準 がわからず困っています。 どなたかご存知の方がいらっしゃったらお答え願えますか? よろしくお願いいたします。

  • 処理が終わったり終わらなかったり。

    処理が終わったり終わらなかったり。 SQLServerの統計情報や実行計画に関してその挙動の 理解に苦しんでいます。 もし解決のヒントがいただけたらと思い、質問しました。 よろしくお願いします。 使用しているOSはWindows2008Server x64です。 DBはSQLServer2008 EEを用いています。 サーバー機はXeon 2.93MHz QuadCore×2です。 メモリは32GBで、うち20GBをSQLServerに使用させています。 javaのアプリケーション内でJDBCでDBアクセスしています。 処理は (1)3000万件程度のデータをメモリ上へ (2)計算処理してファイルへ (3)ファイルをDBへBulkInsert というもので、Javaのほうで8並列処理を行わせています。 この処理がどういうわけか(1)のところで動いたりとまったりします。 (止まっているというよりは、極端に遅くなっているというのが 正確かもしれません。) 経験則としては ・大量データを流す前に少量データで疎通を取った場合にとまる。 ・大量データ→大量データではとまらない。 ・止まったあと、一度スレッドをとめて統計情報を更新後、再度処理を流すと止まらない というようなものがあります。 利用状況モニタを見ると、 I/O Completion というものが非常に長い時間処理しており、 なぜ状況によってこの処理時間が延びるのかがわかりません。 また、統計情報を更新したといっても、実行計画が殆ど変わらない場合もあります。 ただ、実行計画が殆ど変わらない(xmlにしてDIFFを取ると1行しか変わらない。)場合も、 再実行すると正常時間で処理が終了します。 何かお気づきの点がありましたら、是非ご教授ください。

  • USBメモリーを利用してのデータ移行【長文です】

    このたび、パソコンを富士通のFMV DESKPOWER C/40LからNECのVALUESTAR VL350ADに買い換えました。データ移行をしようと思い、このサイトでLANケーブルを利用する方法やUSBメモリーでデータを移行する方法などを見て、最終的に私はデータ移行だけでいいと思ったので、USBメモリーを利用する方法を選びました。そこで、IO-DATA機器のEasy Disk Lightを利用するために、サイトから必要なドライバをインストールしようとしました。しかし、インストールできません。インストールしようとすると、クイックタイムの破れたようなロゴが表示されてしまいます。 以前にクイックタイムをダウンロードしたことがあり、最近は使わないのでアンインストールをしようとしましたが、いつも出来ないという表示が出てしまい、ずっと私のPCに居座りつづけています。 ちなみに、私のパソコンはかなりハードがやられているらしく、起動するたびにクラスタスキャンをしようとします(不良クラスタの数が尋常じゃないので、修復しながら起動すると数時間かかるため、最近はあまり富士通のパソコンは使わず、使う場合はクラスタスキャンをキャンセルして起動しています)。 この場合、USBメモリーを利用してのデータ移行はできないのでしょうか?LANケーブルを利用する方法は難しそうなので、できれば避けたいと思っています。簡単に大量のデータを移行できる方法があれば、どなたか教えてください。よろしくお願いします。

  • 例外に困っています

    現在自分でiアプリを作成しているのですが、初回ダウンロードでスクラッチパッドにアプリ内で使用する画像を書き込む段階での例外に悩んでいます。 確認した限りではN端末でしか出ないようです。 具体的には以下のような感じです。 //イメージファイル読み込み try { MediaImage m; for (int i=0;i<48;i++) { m=MediaManager.getImage("resource:///"+i+".gif"); m.use(); image[i]=m.getImage(); } } catch (UIException UIEx) { System.out.println("status="+UIEx.getStatus(); } 調べた結果、useメソッドで例外(UIException)が吐かれているらしく、ステータスを調べたところ、2(システムリソースが確保できていない?)でした。 例外が吐かれた後も、別にとってきた画像が使えないわけではなく、ちゃんと次の画面でその画像を表示できています。 いったい何が原因なのでしょうか。 N端末以外だと例外が吐かれていないので、プログラミングは間違っていないはずなのですが・・・。

  • Select時に取得行番号を指定する方法って・・

    Select文の時、大量データを処理する場合(java)、レコードセットクラスのnextメソッドでレコードを取得していますが、取得レコードが大量になるとnextメソッド内でヒープサイズがオーバーし、例外が発生してしまいます。なのでトランザクションを複数回にわけて発行し、全件処理したいのですが、Select時に例えば1件~1000件目まで取得とか、1001件から2000件まで取得とかって可能でしょうか?ちなみにDBはDB2を使用しています。

  • AccessとOracleのデータ連携について

    お世話になります。 AccessのデータとOracleのデータ連携について悩んでいます。 Javaのアプリケーションを通して、AccessのデータをOracleに 取り込むシステムを作成しようとしています。 自分で考えた方法としては、 【実装方法1】 出力時 : Accessに【csv出力メニュー】を作成する。データ出力担当者      は、【csv出力メニュー】からFTPにデータの出力を行う。   データ出力時に、企業型DBから通知メールが入力担当者に自 動で送信される。 入力時 : データ入力担当者はメールを受け取り次第、Javaシステ ムのデータ取り込み機能を利用して、FTPから入力対象       データの取り込みJavaシステムを利用して行う。 …です。 ただ、この場合Accessにcsvデータ出力機能を新たに作成しなければなりません。仮にAccessからcsvデータを出力できないといった場合に、 AccessのテーブルをJavaプログラムから直接参照してOracleにデータ登録することは可能なのでしょうか? 若輩者の為、仕様を考えることは初めての経験なのでどなたかご教授いただけませんか?よろしく御願いいたします。

  • 勤怠管理 コアタイムのデータ管理 Java & PostgreSQL

    Java+PostgreSQLを使い、勤怠管理システムを作成中です。 システムではコアタイムを複数設定でき、環境にあわせた勤怠管理が できるようにしたいです。 従業員の勤怠集計はコアタイムを基準に、早出、基本時間、遅刻、残業を 算出できるようにしたいです。 現在、DBスキーマとテーブルに対応するJavaエンティティの定義を進めて いますが、型をどのようにすれば集計が楽になるかわからず困っています。 悩んでいるのが、日付をまたいだコアタイムを設定するとき、PostgreSQLの time型では23:59を超える時刻を扱えないため、 開始 > 終了 という データを登録する必要があり、計算が複雑になることです。 考えているものとしては、2つあります。 1) PostgreSQLの型:time Javaの型:java.sql.Time 2) PostgreSQLの型:integer(分であらわす。9:00であれば、540) Javaの型:Integer(分であらわす。9:00であれば、540) 1)は前述での計算が複雑になる問題があり、2)は、やり方がスマートでは ないような気がします。 どのような定義にすれば妥当でしょうか。 アドバイスや過去の事例等あれば、ご教授下さい。