JRA公式競馬データ配信サービス JRA-VAN Data Lab.

JRA-VAN DataLab.

競馬ソフト開発コーナー

JV-Link 質問箱

一括表示 リストに戻る
タイトルJvGetsの使用方法について
記事No9413
投稿日: 2016/06/11(Sat) 17:51
投稿者ぱっつん
お世話になっております。

Jv-LinkのJvGets()についてお聞きしたいです。
簡略化しましたが以下のようなコードを組んでいます。
5年分くらい蓄積を取得したときにメモリ使用量が著しく高くなっており
メモリーリークの可能性があり、調査しています。
JVGetsの使い方で気になったので質問させて頂きました。
============================================================
int l_intSize = 1500;
byte[] l_bytBuf = new byte[] { };
object l_pBuf = l_bytBuf;

while (true)
{
int l_intRet = m_clsLink.JVGets(ref l_pBuf, l_intSize, out l_strFil
eName);
else if (l_intRet == 0)
{
break;
}
}
============================================================
JvGetsの内部でメモリ確保して、l_pBufに確保したメモリのアドレスが入ると
思っています。
このときに内部で確保したメモリはいつ開放されますでしょうか?
アプリ側で解放する必要があるのでしょうか?
もし、必要がある場合はどのように開放すればよろしいですか?

ご教授ください。
また、そもそも認識が違っている場合は、仕様をご教授ください。

以上、よろしくお願いいたします。

■環境
Visual C# 2015 WPF

タイトルRe: JvGetsの使用方法について
記事No9417
投稿日: 2016/06/15(Wed) 10:04
投稿者JRA-VANソフトサポート
JRA-VANソフトサポートの吉本です。
DataLab.サービスをご利用頂きまして誠にありがとうございます。

> このときに内部で確保したメモリはいつ開放されますでしょうか?
> アプリ側で解放する必要があるのでしょうか?
> もし、必要がある場合はどのように開放すればよろしいですか?

JVGetsでは、メモリの解放を行っておりません。
そのため、アプリケーション側で解放して頂く必要がございます。

メモリ解放の方法については、JV-Linkインターフェース仕様書の
「JVGets」の章の【 VisualBasic6 での JVGets 読み出し方法 】
に記載しておりますので、参考にしていただければと思います。

以上、よろしくお願いいたします。

タイトルRe^2: JvGetsの使用方法について
記事No9418
投稿日: 2016/06/16(Thu) 00:43
投稿者ぱっつん
早速のご返信ありがとうございます。

私はWPF C#を使用しておりますので.net環境です。
VB6のEraseは.netではどのメソッドになるでしょうか?
Array.Clear()とか単にnullを代入でいいのでしょうか?
ご回答よろしくお願いいたします。

よろしくお願いいたします


> JRA-VANソフトサポートの吉本です。
> DataLab.サービスをご利用頂きまして誠にありがとうございます。
>
> > このときに内部で確保したメモリはいつ開放されますでしょうか?

> > アプリ側で解放する必要があるのでしょうか?
> > もし、必要がある場合はどのように開放すればよろしいですか?
>
> JVGetsでは、メモリの解放を行っておりません。
> そのため、アプリケーション側で解放して頂く必要がございます。
>
> メモリ解放の方法については、JV-Linkインターフェース仕様書の
> 「JVGets」の章の【 VisualBasic6 での JVGets 読み出し方法 】
> に記載しておりますので、参考にしていただければと思います。
>
> 以上、よろしくお願いいたします。

タイトルRe^3: JvGetsの使用方法について
記事No9419
投稿日: 2016/06/18(Sat) 02:33
投稿者ぱっつん
お世話になっております。
ぱっつんです。

あれからいろいろと試したところメモリリークが収まりましたので
ご報告いたします。(完全ではないかもですが・・・)

削除はEraseを使用するとご教授頂きました。
C#ではnullを代入するのと同様ですので、null代入の対応を取りました。
その結果、メモリ使用率の異常な増加はなくなりました。

一旦これで様子を見ようとおもいます。

ご協力いただきありがとうございました。

ウィンドウを閉じる