Large and long lived objects, heap vs. NIO?

Hi,
Our application keeps large number of objects in cache (based on Oracle Coherence) and objects are related to subscriber information which means they are supposed to stay in cache for very long time.
The heap size we are looking at is about 3+ GB and probably the majority of the heap will be used to hold the cached objects. Is there anyway to let JRockit GC know about the 'cache' concept so it won't spend too much effort on these 'cached' objects?
Any JRockit tuning tips for this kind of application?
Is NIO a better approach means use the NIO to hold the cache objects rather than heap?
But every NIOed object also consumes some heap (create Java object) at least in the Sun HotSpot implementation, not sure what is the trade-off. What is JRockit standing point on NIO given its superior GC to Sun HotSpot, because JRockit's 'guaranteed pausetime' and be able to large heap size at the same time?
NIO seems to allow go beyond the traditional problem long pause concern when heap size is large.
Our application is supposed to handle at least several hundred GB in distributed configuration (cluster based on Oracle Coherence).
Is this thing JRockit may or may not have advantage/disadvantage?
We heard about 'distributed GC' in distributed environement meaning the dependency on other JVM may cause one local GC to depend on the remote GC on the remote node if GC happens at the same time on different nodes. Any thought from JRockit perspective?
Regards,
Jasper

Thanks a lot, Stefan
I appreciate the extra miles you went beyond just the JRockit...
One clarification in my original question, actually I mean a large number of objects rather than large-sized object. The objects range from 50 bytes to a few kb and the total number of objects are lilley in several millions.
We have been testing Heap vs. NIO based on Sun JVM.
But we are not able to see clear advantages one over the other at this point.
-Using NIO does use less heap but the overall process memory between HEAP and NIO is not much different in our case.
-Our original thinking to use NIO is because we want to cache more than 2+GB of objects per JVM so we can make good use of standard server configurations (8/16 cores 32/64G RAM) without huge number of JVMs. We're targeting 100+ million subscribers in the telecom space. The 2 GB is basically the limit that normal GC (HotSpot) probably can handle without causing long pause, otherwise it will break our SLA (latency requirement is in the ranage of milliseconds).
-From reading the HotSpot JVM, it turns out using NIO is not totally HEAP-free meaning, additional book-keeping for the NIO resident objects are created in the form of Java objects which consumes heap too. So GC is not totally immuned. Also there are some more overheads in handling the NIO objects (create/delete) via the JNI calls.
-Even though we are not using NIO directly, we use Coherence and Coherence provides the HEAP and NIO options for the cached objects, but ultimately it's up to JVM. Therefore I try to bring this up with JRockit. I think the NIO size limit is probably due to one direct memory allocation can be up to 'int' can cover, but if one allocation call is not big enough, multiple allocation calls should do (probably more complex/effort...). But 'int' is up to 4GB and is already good enough in our case for a JVM caching objects in NIO.
-Our ultimate decision is based on TCO, low CPU/memory with high throughput and low latency meet the SLAs.
We will come back to share our test results based on JRockit RealTime later and may ask for more of your insights then.
Best Regards,
Jasper

Similar Messages

  • Caching RAW and LONG RAW objects

    Hi,
    Is there any way to cache RAW and LONG RAW object like BLOB caching?
    Thanks

    Is there any way to cache RAW and LONG RAW object like BLOB caching?What is the version?
    to fetch long fetch size character of bytes you must use any one of below three.
    1)Primary key
    2)ROWID
    3)Unique columns

  • Pathological ParallelGC performance w/ big long-lived object (512MB array)

    Hoping to improve performance, we recently added a bloom filter -- backed by a single long-lived 512MB array -- to our application. Unfortunately, it's killed performance -- because the app now spends ~16 of every ~19 seconds in garbage collection, from the moment the big array is allocated.
    My first theory was that the array was stuck in one of the young generations, never capable of being promoted, and thus being endlessly copied back and forth on every minor young collection. However, some tests indicate the big array winds up in "PS Old" right away... which would seem to be a safe, non-costly place for it to grow old. So I'm perplexed by the GC performance hit.
    Here's the tail of a log from a long-running process -- with UseParallelGC on a dual-opteron machine running 32bit OS/VM -- showing the problem:
    % tail gc.log
    697410.794: [GC [PSYoungGen: 192290K->2372K(195328K)] 1719973K->1535565K(1833728K), 16.4679630 secs]
    697432.415: [GC [PSYoungGen: 188356K->1894K(194752K)] 1721549K->1536592K(1833152K), 16.4797510 secs]
    697451.419: [GC [PSYoungGen: 188262K->4723K(195200K)] 1722960K->1540085K(1833600K), 16.4797410 secs]
    697470.817: [GC [PSYoungGen: 191091K->1825K(195520K)] 1726453K->1541275K(1833920K), 16.4763350 secs]
    697490.087: [GC [PSYoungGen: 189025K->8570K(195776K)] 1728475K->1550136K(1834176K), 16.4764320 secs]
    697509.644: [GC [PSYoungGen: 195770K->5651K(192576K)] 1737336K->1555061K(1830976K), 16.4785310 secs]
    697530.749: [GC [PSYoungGen: 189203K->1971K(194176K)] 1738613K->1556430K(1832576K), 16.4642690 secs]
    697551.998: [GC [PSYoungGen: 185523K->1716K(193536K)] 1739982K->1556999K(1831936K), 16.4680660 secs]
    697572.424: [GC [PSYoungGen: 185524K->4196K(193984K)] 1740807K->1560197K(1832384K), 16.4727490 secs]
    I get similar results from the moment of launch on another machine, and 'jmap -heap' (which isn't working on the long-lived process) indicates the 512MB object is in 'PS Old' right away (this is from a quick launch of a similar app):
    jdk1.5.0_04-32bit/bin/jmap -heap 10586Attaching to process ID 10586, please wait...
    Debugger attached successfully.
    Server compiler detected.
    JVM version is 1.5.0_04-b05
    using thread-local object allocation.
    Parallel GC with 2 thread(s)
    Heap Configuration:
    MinHeapFreeRatio = 40
    MaxHeapFreeRatio = 70
    MaxHeapSize = 1887436800 (1800.0MB)
    NewSize = 655360 (0.625MB)
    MaxNewSize = 4294901760 (4095.9375MB)
    OldSize = 1441792 (1.375MB)
    NewRatio = 8
    SurvivorRatio = 8
    PermSize = 16777216 (16.0MB)
    MaxPermSize = 67108864 (64.0MB)
    Heap Usage:
    PS Young Generation
    Eden Space:
    capacity = 157286400 (150.0MB)
    used = 157286400 (150.0MB)
    free = 0 (0.0MB)
    100.0% used
    From Space:
    capacity = 26214400 (25.0MB)
    used = 26209080 (24.99492645263672MB)
    free = 5320 (0.00507354736328125MB)
    99.97970581054688% used
    To Space:
    capacity = 26214400 (25.0MB)
    used = 1556480 (1.484375MB)
    free = 24657920 (23.515625MB)
    5.9375% used
    PS Old Generation
    capacity = 1677721600 (1600.0MB)
    used = 583893848 (556.8445663452148MB)
    free = 1093827752 (1043.1554336547852MB)
    34.80278539657593% used
    PS Perm Generation
    capacity = 16777216 (16.0MB)
    used = 10513680 (10.026626586914062MB)
    free = 6263536 (5.9733734130859375MB)
    62.66641616821289% used
    The 'PS Old' generation also looks way oversized here -- 1.6G out of 1.8G! -- and the young/tenured starved, although no non-default constraints have been set on generation sizes, and we had hoped the ballyhooed 'ergonomics' would've adjusted generation sizes sensibly over time.
    '-XX:+UseSerialGC' doesn't have the problem, and 'jmap -heap' suggests the big array is in the tenured generation there.
    Any ideas why UseParallelGC is behaving pathologically here? Is this, as I suspect, a bug? Any suggestions for getting it to work better through VM options? (Cap the perm size?)
    Any way to kick a running ParallelGC VM while it's running to resize it's generations more sensibly?
    I may also tweak the bloom filter to use a number of smaller -- and thus more GC-relocatable -- arrays... but I'd expect that to have a slight performance hit from the extra level of indirection/indexing, and it seems I shouldn't have to do this if the VM lets me allocate a giant object in the first place.
    Thanks for any tips/insights.
    - Gordon @ IA

    Yes, in my app, the large array is updated constantly.
    However, in the test case below, I'm getting similar behavior without any accesses to the big array at all.
    (I'll file this test case via the bug-reporting interface as well.)
    Minimal test case which seems to prompt the same behavior:
    * Demonstrate problematic ParallelGC behavior with a "big" (512MB)
    * object. (bug-id#6298694)
    * @author gojomo/archive,org
    public class BigLumpGCBug {
    int[] bigBitfield;
    public static void main(String[] args) {
    (new BigLumpGCBug()).instanceMain(args);
    private void instanceMain(String[] args) {
    bigBitfield = new int[Integer.MAX_VALUE>>>4]; // 512MB worth of ints
    while(true) {
    byte[] filler = new byte[1024*1024]; // 1MB
    Run with java-options "-Xmx700m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps", the GC log is reasonable:
    0.000: [GC 0.001: [DefNew: 173K->63K(576K), 0.0036490 secs]0.005: [Tenured: 39K->103K(1408K), 0.0287510 secs] 173K->103K(1984K), 0.0331310 secs]
    2.532: [GC 2.532: [DefNew: 0K->0K(576K), 0.0041910 secs]2.536: [Tenured: 524391K->524391K(525700K), 0.0333090 secs] 524391K->524391K(526276K), 0.0401890 secs]
    5.684: [GC 5.684: [DefNew: 43890K->0K(49600K), 0.0041230 secs] 568281K->524391K(711296K), 0.0042690 secs]
    5.822: [GC 5.822: [DefNew: 43458K->0K(49600K), 0.0036770 secs] 567849K->524391K(711296K), 0.0038330 secs]
    5.956: [GC 5.957: [DefNew: 43304K->0K(49600K), 0.0039410 secs] 567695K->524391K(711296K), 0.0137480 secs]
    6.112: [GC 6.113: [DefNew: 43202K->0K(49600K), 0.0034930 secs] 567594K->524391K(711296K), 0.0041640 secs]
    Run with the ParallelGC, "-Xmx700m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseParallelGC", the long GCs dominate immediately:
    0.000: [GC [PSYoungGen: 2272K->120K(3584K)] 526560K->524408K(529344K), 60.8538370 secs]
    60.854: [Full GC [PSYoungGen: 120K->0K(3584K)] [PSOldGen: 524288K->524389K(656960K)] 524408K->524389K(660544K) [PSPermGen: 1388K->1388K(8192K)], 0.0279560 secs]
    60.891: [GC [PSYoungGen: 2081K->0K(6656K)] 526470K->524389K(663616K), 57.3028060 secs]
    118.215: [GC [PSYoungGen: 5163K->0K(6656K)] 529553K->524389K(663616K), 59.5562960 secs]
    177.787: [GC
    Thanks,
    - Gordon @ IA

  • An effective way to compress Large Object Heap

    I think I've found an effective way to compress LOH: 
    If CLR always alloc every large object at the beginning of a RAM page(usually 4KB per page),then the large object heap(LOH) can be compressed without much
    cost: CLR can compress LOH by modifying RAM page table and TLB instead of copying data. If so, small fragmentation maybe still exist (less then a memory page size per fragment), but there would be no large fragmentation, and compressing would be very fast
    because of no copying. To do this, OS support may be needed, fortunately Windows OS and Visual Studio are both Microsoft's softwares, so Microsoft can implement this at least on Windows.

    I suspect that this technique is already used in a 3rd party implementation of Java. It was briefly mentioned in a discussion about alternative GCs for CoreCLR:
    https://github.com/dotnet/coreclr/issues/430
    In any case, feel free to open a specific issue in the CoreCLR GitHub repository about this. Implementing an entirely new GC is a lot of work but simply improving the existing one might be another story. Though the fact that it requires kernel
    support doesn't help, it may be done but it will have to wait until the kernel guys implement support for it and that will take time. There may also be legal problems if someone has a patent for such a technique.
    Regarding performance: modifying page tables has a certain cost. It's possible to find that for smaller blocks it's faster to just copy the block than to modify the page tables. An implementation would probably have to employ a mix of memory copying and
    page table modification and in that case you don't even need to require that objects are allocated on a page boundary. Keep in mind that it's not required to deal with one object at a time, there may be consecutive live objects that can be copied in one go.
    As for Joel ramblings, well:
    "I have a master in computer science and know the speed of the algorithm of compacting a large heap."
    Given that you have a history of misleading/inaccurate/confusing claims such a statement is priceless. I suppose that during your master courses you were never taught basic data structures and as result you don't know that hashtable searches are O(1)
    and that sorting does help with searching:
    https://social.msdn.microsoft.com/Forums/en-US/09a3116a-9626-401f-8c45-c0e8b09da69c/fastest-search-algorithm?forum=csharpgeneral
    In this particular case you seem to confuse the term heap as used in GC with the heap data structure. Great.
    Thank you! I have opened a specific issue in the CoreCLR GitHub repository about this: https://github.com/dotnet/coreclr/issues/555

  • Get process id and task id for long-lived process?

    Scenario:
    I have created a long-lived process that will assign a task to a user. The user then has two options to Accept or Reject. Accept route saves the data to the database. Reject does not save. 
    I want to invoke this process in .Net and need to know how to get the current task id of the process invoked. I know that invoking the async method returns an invocation id. How do I use this value to get to the current task id of the process?
    I then want to be able to call a method to complete this task outside of workspace. For example, on my form I would have an Approve and Reject button. If user clicks Approve it would choose the approve route in the process and if Reject button clicked it would take the reject route. What would be the API call to do this in .Net that would trigger the appropriate route given the button clicked on the Form?
    Any help would be appreciated.

    Generally, the TaskManager service is used to query tasks. I've not used the wsdl for that service before so I can't help you much there.
    In the process, you can get the taskID if you use a custom render service. To externalize the taskID you'd have to do something like have the render service save the ID to a file, or call a web service and pass it to the service, or use JMS service, or email service.....

  • Mass upload of characteristics and long text for Object Links in DIR

    hello all
    I want to upload characteristics and long text of Linked Objects in Documents: i wanted to use BAPI_OBJCL_CHANGE and family but, it is a class that is on a different level than the DIR as it does not belong to the DIR directly, but to objects that are linked TO the dir, via the tab linked object.
    any idea on how I can do that?
    LSMW and recordings do not work (or at least I did not find a way to make them work);
    have you encountered such a situation?
    thanks

    Dear,
    After call BAPI call also
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING wait = 'X'.
    Please refer this thread also,
    BAPI_OBJCL_CHANGE.
    Regards,
    R.Brahmankar

  • How to stop defragmenting and start living - Revisit

    Hi,
    When deal with fragmentation, most of the time we will be directed to read the technical paper (How to stop defragmenting and start living). If i'm not mistaken, this was published in the year of 1996/1998 for Oracle version 7/8.
    Time passed and we are now at 11g and i can't help to wonder if the many good advices still hold true? I've seen posting saying forget about segment with > 1024 extents, as it doesn't degrade performance.
    I want to stick to that advice, but...its kind of old! Or maybe old is as good as gold.
    Rgds
    Ung

    Realistically, any recent Oracle version is going to use locally managed tablespaces, using either uniform or autoallocated extent sizes. In either case, it is practically impossible to have fragmentation, so there is exceptionally little that a DBA could even do if he wanted to. You don't set extent sizes at the table level any longer, you don't set PCTINCREASE, at most you pick an extent size for each tablespace and pick with tablespace an object is going to reside in.
    The principles from that white paper are still very valid. It's just that Oracle has made it exceptionally difficult to deviate from them now.
    Justin

  • HELP - With Object Heap

    Hello,
    I was wondering if you could help me with my problem. I have recently designed a website that uses the JVM on the server side (http://amazingestate.com) on a shared linux machine. The site was working fine until the owners of the server installed a few new files and I now get errors when running the site.
    The java classes run fine from a command prompt but when are called by a cgi I get a �could not reserve enough space for the object heap� error. The java programs are small and don�t require large memory requirements.
    I was thinking the error is within the shell script in terms of allocating space for the program. I am not sure how to allocate memory within the shell account at runtime within the cgi wrapper script. The script bellow used to work fine and also run fine when telneting into my account. The error only occurs when running inside a cgi request.
    I have also tried the �Xmx and �Xms commands without luck.
    I have also tried to test the ulimit which is also set on unlimited.
    The following script can be found at
    http://amazingestate.com/cgi-bin/publicView/RND10.cgi
    which allows the viewing of the error
    #!/bin/sh
    echo "content-type:text/html"
    echo
    ulimit
    echo "<HTML><BODY>"
    echo "</BODY></HTML>"
    /usr/java/j2sdk1.4.0/bin/java -server -cp /home/amazing/ss/publicView RND10
    Anyones help would be greately appreciated. Thanks for your time.
    Dale Miller

    You're going to start a new JVM every time you get a page hit? Are you aware of how costly this is (slow and memory-intensive)? This is exactly the type of requirement that Java servlets and server pages (jsps) are designed to take care of. You should consider using these.
    Regarding your specific problem, the only thing I could recommend trying are the -Xmx/ms switches, which you seem to have tried.

  • Script LiveCycle Web Services long lived

    Hi,
    I have a script to call web services (in fact short-lived livecycle process).
    I want to call a long lived process with script to. So I try to use the asynchronous method with soap.request but I'm lost.
    I wonder if anybody has an example of how to script a call to a long lived process in adobe script because all process use the invoke method.
    Any help would be appreciated.
    Thanks

    In the SOAP.request method, there is the ORequest object with the invoke method.<br /><br />The cMethod is set at the line : var result = mySync.result("invoke"); <br /><br />----------------------------------------<br /><br />I scripted my short-lived web services (with the .invoke() method ) because I cannot drag and drop the result by the data connection wizard.<br /><br />I will test the connexion wizard for the long Lived process call. It's true, I don't need to script.<br /><br />-----------------------------------------------------------<br /><br />I try to rewrite my script for the short lived process call. Because I used this kind of code : <br /><br />function callWS(URL,objet){<br /><br />     var service = SOAP.connect(URL);<br /><br />     if(typeof service != "object")<br /><br />          xfa.host.messageBox("Couldn't get WSDL object");<br /><br />    if(service.invoke == "undefined")<br /><br />        xfa.host.messageBox("Couldn't get webservicex.invoke Call");<br />        <br />     var param;<br /> <br />     param =<br />        {<br />      nom_client:objet,<br />        };<br />         <br /><br />    var e;<br />    var cXMLDoc;<br />    var nb = 0;<br /><br />    try<br />    {   <br />         var result = service.invoke(param);<br />         <br />          if((result == "") | (result == null))  {<br />        <br />               result = "<no results returned>";<br />             return (false); <br />             <br />          }else{               <br />          <br />               for(var nItemCount in result)<br />            {<br />                cXMLDoc = result[nItemCount];<br />            }<br />               myXML = XMLData.parse( cXMLDoc,false);<br />        }<br /><br />      }catch(e) {<br />          <br />          xfa.host.messageBox("exception "+e);      <br />     }<br />}<br /><br />But with this code, I cannot use the authenticator object.<br /><br />With SOAP.request, I can use the authenticator object but I don't know how to get the result of my web service.<br /><br />For example : <br /><br />function callWS(URL){<br /><br />    var cXMLDoc;<br /><br />    try<br />    {  <br />              console.show();<br />              SOAP.wireDump = true;<br />                    <br />               var myAuthentication = {<br />                    Username: "administrator",<br />                    Password: "password"<br />               };<br />                <br />               var response = SOAP.request({<br />                    cURL: URL,<br />                    oRequest: {<br />                         "http://sw0052.phys.pack/soap/services/:invoke":{}<br />                    },<br />                    oAuthenticate: myAuthentication<br />               });<br /><br />      }catch(e) {<br />          <br />          xfa.host.messageBox("exception "+e);      <br />     }<br />}<br /><br />In the javascript Console there is the XML I need But I don't know how to retrieve the value.<br /><br /><?xml version="1.0"?><br /><SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br />     <SOAP-ENV:Body><br />          <ns0:invoke SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns0="http://sw0052.phys.pack:8080/soap/services/NumeroDemande/"/><br />     </SOAP-ENV:Body><br /></SOAP-ENV:Envelope><br /><br /><?xml version="1.0" encoding="UTF-8"?><br /><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><br />     <soapenv:Body><br />          <invokeResponse xmlns="http://sw0052.phys.pack:8080/soap/services/NumeroDemande/"><br />               <ns1:resultat xsi:type="ns1:XML" xmlns:ns1="http://adobe.com/idp/services"><br />                    <ns1:document><?xml version="1.0"?><br />                                                  <Formulaire><br />                                                       <NumeroDemande><br />                                                            <Numero type="int">17</Numero><br />                                                       </NumeroDemande></Formulaire><br />                    </ns1:document><br />               </ns1:resultat><br />          </invokeResponse><br />     </soapenv:Body><br /></soapenv:Envelope><br /><br />I tried several methods with response with no results. <br /><br />Thanks

  • What's the difference between a not-initialed object and a null object

    hi guys, i wanna know the difference between a not-initialed object and a null object.
    for eg.
    Car c1;
    Car c2 = null;after the 2 lines , 2 Car obj-referance have been created, but no Car obj.
    1.so c2 is not refering to any object, so where do we put the null?in the heap?
    2.as no c2 is not refering to any object, what's the difference between c2 and c1?
    3.and where we store the difference-information?in the heap?

    For local variables you can't have "Car c1;" the compiler will complain.That's not true. It will only complain if you try to use it without initializing it.
    You can have (never used, so compiler doesn't care):
    public void doSomething()
       Car c1;
       System.out.println("Hello");
    }or you can have (definitely initialized, so doesn't have to be initialized where declared):
    public void doSomething(boolean goldClubMember)
       Car c1;
       if (goldClubMember)
           c1 = new Car("Lexus");
       else
           c1 = new Car("Kia");
       System.out.println("You can rent a " + c1.getMake());
    }

  • Problem with Java Memory "Could not reserve enough space for object heap"

    Hi gurus,
    I am not an expert with Java´s configuration, and I have a situation that I don´t understand. First of all, I am working at Centos 6.2 with jdk_1.6 and Tomcat 7.
    The problem is...
    - If I run Tomcat with JAVA_OPTS="-Xmx128m"* (at catalina.sh) all works fine.
    - If I run Tomcat with JAVA_OPTS="-Xmx512m"* (at catalina.sh) an error appears:
    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    Could not create the Java virtual machine.
    This appear when I run java -version or when I try to stop Tomcat, and the Tomcat isn´t able to stop.
    The strange thing is that my server has more than 200M free in physical memory. So, why Tomcat isn´t able to stop? and Why Java doesn´t use the free memory in my server?
    Thanks in advanced.

    Hello EJP, thanks for your answer.
    I have explained bad.
    The server has 703M free when Tomcat is stopped. I had mentioned that my server has more than 200M free in physical memory when Tomcat is running with JAVA_OPTS="-Xmx512m", so I don´t understand why these errors appear.
    Do you understand me?
    Recently I have checked the swap memory, and it is disabled. In spite of swap memory is disabled I think java wouldn´t need this memory because it has free physical memory
    Thanks again.

  • I need to shut my zoom off on my Iphone 5, it is to large and can't use the phone.

    I have a iphone 5  from a person.  Been learning how to use it by myself.  I went to accessibilty and clicked on Zoom and was experimenting with it and got the screen to large and can't get it back to normal, now I can't use the phone because it is magnified so much.  Tried to connect to help but couldn"t see the message that Apple sent to me on my phone.  Don't have all the specs because the  party was out of state from where she lived therefore I have any more info.  Please help.

    To turn off Zoom double-tap the screen with three fingers.

  • Could not reserve enough space for object heap in Jdeveloper 11g R1

    Hi,
    I tried to increase the JVM heap size with Virtual machine = server and the value as -Xmx512m -XX:MaxPermSize=512M -Djbo.debugoutput=console in the project properties->Run/Debug/Profile->Default-Edit, but still getting the below error.
    Any help is appreciated.
    [waiting for the server to complete its initialization...]
    JAVA Memory arguments: -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=512m
    WLS Start Mode=Development
    CLASSPATH=D:\Oracle\MIDDLE~1\patch_wls1032\profiles\default\sys_manifest_classpath\weblogic_patch.jar;D:\Oracle\MIDDLE~1\patch_jdev1111\profiles\default\sys_manifest_classpath\weblogic_patch.jar;D:\Oracle\MIDDLE~1\JDK160~1.5-3\lib\tools.jar;D:\Oracle\MIDDLE~1\utils\config\10.3\config-launch.jar;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\weblogic_sp.jar;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\weblogic.jar;D:\Oracle\MIDDLE~1\modules\features\weblogic.server.modules_10.3.2.0.jar;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\webservices.jar;D:\Oracle\MIDDLE~1\modules\ORGAPA~1.0/lib/ant-all.jar;D:\Oracle\MIDDLE~1\modules\NETSFA~1.0_1/lib/ant-contrib.jar;D:\Oracle\MIDDLE~1\ORACLE~1\modules\oracle.jrf_11.1.1\jrf.jar;D:\Oracle\MIDDLE~1\WLSERV~1.3\common\eval\pointbase\lib\pbclient57.jar;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\xqrl.jar;d:\source\FCUBSInstaller.jar;D:\Olite10g_1\MOBILE\Sdk\bin\OLITE40.JAR;;
    PATH=D:\Oracle\MIDDLE~1\patch_wls1032\profiles\default\native;D:\Oracle\MIDDLE~1\patch_jdev1111\profiles\default\native;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\native\win\32;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\bin;D:\Oracle\MIDDLE~1\modules\ORGAPA~1.0\bin;D:\Oracle\MIDDLE~1\JDK160~1.5-3\jre\bin;D:\Oracle\MIDDLE~1\JDK160~1.5-3\bin;D:\Olite10g_1\jre\1.4.2\bin\client;D:\Olite10g_1\jre\1.4.2\bin;D:\Software\oracle\product\10.2.0\client_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Windows Imaging\;D:\software\Clearcase 7.0\common;D:\software\Clearcase 7.0\ClearCase\bin;D:\Olite10g_1\MOBILE\sdk\bin;C:\Program Files\Liquid Technologies\Liquid XML Studio 2011\XmlDataBinder9\Redist9\cpp\win32\bin;D:\Software\Liquid Technologies\Liquid XML Studio 2011\XmlDataBinder9\Redist9\cpp\win32\bin;D:\software\oracle10g\BIN;D:\Jdev10g\jdk\bin;;D:\Oracle\MIDDLE~1\WLSERV~1.3\server\native\win\32\oci920_8
    * To start WebLogic Server, use a username and *
    * password assigned to an admin-level user. For *
    * server administration, use the WebLogic Server *
    * console at http:\\hostname:port\console *
    starting weblogic with Java version:
    java version "1.6.0_14"
    Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
    Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode)
    Starting WLS with line:
    D:\Oracle\MIDDLE~1\JDK160~1.5-3\bin\java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=128m -XX:MaxPermSize=512m -Dweblogic.Name=DefaultServer -Djava.security.policy=D:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\weblogic.policy -Djavax.net.ssl.trustStore=D:\Oracle\Middleware\wlserver_10.3\server\lib\DemoTrust.jks -Xmx512m -XX:MaxPermSize=512M -Djbo.debugoutput=console -Dweblogic.nodemanager.ServiceEnabled=true -Xverify:none -da -Dplatform.home=D:\Oracle\MIDDLE~1\WLSERV~1.3 -Dwls.home=D:\Oracle\MIDDLE~1\WLSERV~1.3\server -Dweblogic.home=D:\Oracle\MIDDLE~1\WLSERV~1.3\server -Djps.app.credential.overwrite.allowed=true -Ddomain.home=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1 -Dcommon.components.home=D:\Oracle\MIDDLE~1\ORACLE~1 -Djrf.version=11.1.1 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Djrockit.optfile=D:\Oracle\MIDDLE~1\ORACLE~1\modules\oracle.jrf_11.1.1\jrocket_optfile.txt -Doracle.domain.config.dir=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1\config\FMWCON~1 -Doracle.server.config.dir=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1\config\FMWCON~1\servers\DefaultServer -Doracle.security.jps.config=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1\config\fmwconfig\jps-config.xml -Djava.protocol.handler.pkgs=oracle.mds.net.protocol -Digf.arisidbeans.carmlloc=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1\config\FMWCON~1\carml -Digf.arisidstack.home=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1\config\FMWCON~1\arisidprovider -Dweblogic.alternateTypesDirectory=D:\software\oracle\product\10.2.0\client_1\modules\oracle.ossoiap_11.1.1,D:\software\oracle\product\10.2.0\client_1\modules\oracle.oamprovider_11.1.1 -Dweblogic.jdbc.remoteEnabled=false -Dwsm.repository.path=C:\DOCUME~1\ANURAD~1\APPLIC~1\JDEVEL~1\SYSTEM~1.36\DEFAUL~1\oracle\store\gmds -Xms512m -Xmx512m -Dweblogic.management.discover=true -Dwlw.iterativeDev= -Dwlw.testConsole= -Dwlw.logErrorsToConsole= -Dweblogic.ext.dirs=D:\Oracle\MIDDLE~1\patch_wls1032\profiles\default\sysext_manifest_classpath;D:\Oracle\MIDDLE~1\patch_jdev1111\profiles\default\sysext_manifest_classpath weblogic.Server
    Error occurred during initialization of VM
    Could not reserve enough space for object heap
    Process exited.

    This is telling you that there is not enough memory for the heap size you've specified. Increasing the heap size makes this worse, not better. You need more physical memory.
    john

  • Mapping CLOB and Long in xml schema

    Hi,
    I am creating an xml schema to map some user defined database objects. For example, for a column which is defined as VARCHAR2 in the database, I have the following xsd type mapping.
    <xsd:element name="Currency" type="xsd:string" />
    If the oracle column is CLOB or Long(Oracle datatype), could you please tell me how I can map it in the xml schema? I do not want to use Oracle SQL type like:
    xdb:SQLType="CLOB" since I need a generic type mapping to CLOB. Would xsd:string still hold good for CLOB as well as Long(Oracle datatype) ?
    Please help.
    Thanks,
    Vadi.

    The problem is that LONGs are not buffered but are read from the wire in the order defined. The problem is the same as
    rs = stmt.executeQuery("select myLong, myNumber from tab");
    while (rs.next()) {
    int n = rs.getInt(2);
    String s = rs.getString(1);
    The above will fail for the same reason. When the statement is executed the LONG is not read immediately. It is buffered in the server waiting to be read. When getInt is called the driver reads the bytes of the LONG and throws them away so that it can get to the NUMBER and read it. Then when getString is called the LONG value is gone so you get an exception.
    Similar problem here. When the query is executed the CLOB and BLOB locators are read from the wire, but the LONG is buffered in the server waiting to be read. When Clob.getString is called, it has to talk to the server to get the value of the CLOB, so it reads the LONG bytes from the wire and throws them away. That clears the connection so that it can ask the server for the CLOB bytes. When the code reads the LONG value, those bytes are gone so you get an exception.
    This is a long standing restriction on using LONG and LONG RAW values and is a result of the network protocol. It is one of the reasons that Oracle deprecates LONGs and recommends using BLOBs and CLOBs instead.
    Douglas

  • How to create a LONG TEXT object in BAPI_ALM_NOTIF_CREATE

    Dear experts,
    Would you please give me a hand how to create a LONG TEXT object when creating a new Notification using BAPI_ALM_NOTIF_CREATE.
    The snapit of my code is below. The Notification is created but without a long text.
    THANK YOU!!
    Data:
        lv_it_longText type STANDARD TABLE OF BAPI2080_NOTFULLTXTI,
          lv_st_longText like LINE OF  lv_it_longText,
      lv_st_longText-OBJTYPE = 'QME'.
      lv_st_longText-TEXT_LINE = DESCRIPTIONLONG.
    CALL FUNCTION 'BAPI_ALM_NOTIF_CREATE'
      EXPORTING
      EXTERNAL_NUMBER          =
       notif_type               = 'M1'
        notifheader              = lv_header
      TASK_DETERMINATION       = ' '
      SENDER                   =
      ORDERID                  =
    IMPORTING
       NOTIFHEADER_EXPORT       = lv_header_import
    TABLES
    *NOTITEM                  =   lv_it_item
      NOTIFCAUS                =
      NOTIFACTV                =
      NOTIFTASK                =
      NOTIFPARTNR              =
       LONGTEXTS                = lv_it_longText
      KEY_RELATIONSHIPS        =
       RETURN                   = lv_it_return.

    Hi
    Make sure you have filled OBKEY.
    OBJKEY must have the corresponding sort field for the values named below :-
    1. QMEL - Notification header
    2. QMFE - Notification item
    3. QMUR - Notification cause
    4. QMSM - Notification task
    5. QMMA - Notification action
    The combination of sort field of item/cause, item/task and item/action must be unique within a notification. If you leave the sort field empty and the OBJTYP = QME, then a long text is created for the notification header.
    Regards
    Abhii

Maybe you are looking for