2013-08-19 39 views
0

我在試圖在Studio中運行Cast Iron編排時遇到問題。當我單獨保留默認堆大小(512MB)時,作業凍結在大約39K條記錄上。當我將堆加倍到1024MB(最大)時,它會在80K記錄中凍結。所以很明顯,每當循環運行時,工作都會保留一些東西。但什麼類型的循環活動在循環之間保留數據?Cast Iron編排內存泄漏

我在這裏包含了我的編排的圖像,以顯示這個工作看起來有多簡單。只有一個JavaScript函數用於翻譯值(在Read XML活動中)。這是我寫的只使用局部變量的自定義函數(假設可能存在函數之間的某種共享範圍 - 我對此表示懷疑)。Here it is.

更新活動也是一個Insert(這是Cast Iron 6.4)。

有沒有關於這些步驟之一保留變量的步驟?我正在重用相同的循環變量,它只是翻譯的XML文件的一段(「項目」)。

my orchestration http://www.columbia.edu/~dm2241/membersJob.png

下面是我的會員循環值的xsd:

<?xml version="1.0" encoding="UTF-8"?> 
<!-- edited with XMLSpy v2012 (x64) (http://www.altova.com) by Colin MacAllister (Columbia Business School) --> 
<!--W3C Schema generated by XMLSpy v2012 (x64) (http://www.altova.com)--> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="rss"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="channel" minOccurs="0" maxOccurs="unbounded"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="title"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"/> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="link"> 
       <xs:simpleType> 
        <xs:restriction base="xs:anyURI"/> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="description" type="xs:string"/> 
       <xs:element name="pubDate"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"/> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="generator"> 
       <xs:simpleType> 
        <xs:restriction base="xs:anyURI"/> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="language"> 
       <xs:simpleType> 
        <xs:restriction base="xs:string"> 
        <xs:enumeration value="en"/> 
        </xs:restriction> 
       </xs:simpleType> 
       </xs:element> 
       <xs:element name="item" minOccurs="0" maxOccurs="unbounded"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="cgId" type="xs:unsignedInt"/> 
        <xs:element name="firstName"> 
         <xs:simpleType> 
         <xs:restriction base="xs:string"/> 
         </xs:simpleType> 
        </xs:element> 
        <xs:element name="lastName"> 
         <xs:simpleType> 
         <xs:restriction base="xs:string"/> 
         </xs:simpleType> 
        </xs:element> 
        <xs:element name="email"> 
         <xs:simpleType> 
         <xs:restriction base="xs:string"/> 
         </xs:simpleType> 
        </xs:element> 
        <xs:element name="accountType"> 
         <xs:simpleType> 
         <xs:restriction base="xs:string"/> 
         </xs:simpleType> 
        </xs:element> 
        <xs:element name="member" type="xs:unsignedInt"/> 
        <xs:element name="officer" type="xs:unsignedInt"/> 
        <xs:element name="officerPosition"> 
         <xs:simpleType> 
         <xs:restriction base="xs:string"/> 
         </xs:simpleType> 
        </xs:element> 
        <xs:element name="activeOfficer" type="xs:unsignedInt"/> 
        <xs:element name="membershipEndDate" type="xs:string"/> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
     <xs:attribute name="version" use="required"> 
     <xs:simpleType> 
      <xs:restriction base="xs:decimal"/> 
     </xs:simpleType> 
     </xs:attribute> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

回答

0

其中一個文件的方式來清理工作室堆內存使用量是 確保在狀態欄中的顯示內存使用情況選項從「首選項」對話框中選擇,內存條和垃圾桶圖標以狀態欄的形式顯示在工作室的底部。此內存條顯示Studio當前使用的內存量, 與t他總共分配給Studio的內存。

要請求Studio嘗試垃圾回收,回收Studio內部的任何未使用的內存 ,請單擊位於內存條右側的垃圾桶圖標。 單擊垃圾回收垃圾桶圖標可能會減少工作室當前內部使用的內存量,從而可能會增加使用大型項目​​時的工作室效率 。

另一個常見原因是XML模式首選項集合「XML模式首選項部分的內存中爲模式分配的子節點級別的數量」也決定了分配給內存的子節點級別的數量,子節點級別的數量會對Studio的性能產生不利影響,從而導致OOM錯誤。 同時檢查「遞歸節點級數」上設置的值,指定大量遞歸節點級別也會對Studio的性能產生不利影響。

第一個建議是檢查這些偏好並優化所用的值,以便爲您的項目獲得最佳性能。但是,如果這些不起作用,那麼我會建議您聯繫IBM支持人員,以便他們確定導致您的特定情況的瓶頸的原因,並可以幫助您繼續。

0

嘗試使用拆分來分解處理。執行查詢後放置拆分活動。將該變量命名並在分割之後重新映射和必要的輸入。