我需要用Clob作为参数传递给一个dll。现在的问题是传递可以实现,但是被占用的内存却不释放。那位知道原因,告诉小弟一声?多谢了!!!
    下面是存储过程的声明:
  create or replace procedure CTXSYS.dll_idx_lexer(
    text      in            CLOB, 
    tokens    in out        CLOB,
    locneeded in            boolean
  ) is external
     name "HLLexIndex" 
     LIBRARY ctxsys.Lexer_Lib 
     LANGUAGE C 
     WITH CONTEXT
     parameters
     (
      context,
      text,
      tokens,
      locneeded
     ); 

解决方案 »

  1.   

    具体地说,我的dll是一个断字器(user_lexer),在Oracle全文索引时,负责把原文分解成词串,以便建立全文索引。它是可以工作的,但是对2万条记录建索引时所占用的内存总量(包括虚拟内存)就超过了1G.我试过把输入参数也改为输入输出参数,就没有内存占用的问题,但是返回的Clob就成空的了。求求各位,帮帮忙,谢谢!!!
      

  2.   

    我对DLL不熟悉,不知道对不对你在DLL函数中创建了一个对象,用于存放解释结果,但又不能在函数内部就释放,因为外部还要引用.
    所以能不能考虑增加一个DLL函数,用于释放那个对象.只要一使用完那个解释结果,就调用释放函数.