harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Geir Magnusson Jr." <g...@pobox.com>
Subject Re: [testing] trying to run freemind with harmony
Date Thu, 17 Aug 2006 16:15:57 GMT
well, yeah.  clearly it's DRLVM

geir

On Aug 17, 2006, at 11:34 AM, Tim Ellison wrote:

> FYI : cannot reproduce on the classlib r432241 running on IBM VME
> Windows XP.  Freemind seems to work fine there[1].
>
> [1] http://people.apache.org/~tellison/Harmony-1209.jpg
>
> Regards,
> Tim
>
> Alexey Petrenko wrote:
>> Salikh,
>>
>> as far as I understood he runs a snapshot...
>>
>> SY, Alexey
>>
>> 2006/8/17, Salikh Zakirov <Salikh.Zakirov@intel.com>:
>>> Iñigo wrote:
>>>> C:\Archivos de programa\FreeMind\lib>java -Xmx1g -verbose:gc* -jar
>>>> freemind.jar
>>>> GC v4 M1-39 (2006-03-28)
>>>> GC will incrementally slide compact at each GC, using algorithm = 2
>>>> Chunks will be swept on allocation
>>>> WARNING: final heap size is too large, reduced to 900 Mb
>>>> java heap initial size 64 Mb, maximum size 900 Mb (38400000h),
>>> addresses
>>>> range 2
>>>> 0020000 - 58420000
>>>> java.lang.OutOfMemoryError
>>>>         <no stack trace available>
>>>
>>> Iñigo, the log above doesn't have any collection messages, thus
>>> no collection had taken place, and the OutOfMemoryError is most  
>>> likely
>>> caused by some other reason -- not the java heap shortage.
>>>
>>> I have just grepped DRLVM and found about 25 places where OOM is  
>>> thrown
>>> explicitly in the VM.
>>>
>>> Applying following patch and running with '-verbose:oom - 
>>> verbose:gc*'
>>> may shed some light on the reason of the problem.
>>>
>>> -- >8 --
>>> diff --git vm/vmcore/src/class_support/Class_File_Loader.cpp
>>> vm/vmcore/src/class_support/Class_File_Loader.cpp
>>> index 0ec087f..259cc87 100644
>>> --- vm/vmcore/src/class_support/Class_File_Loader.cpp
>>> +++ vm/vmcore/src/class_support/Class_File_Loader.cpp
>>> @@ -518,6 +518,7 @@ bool Field::parse(Class *clss, Const_Poo
>>>         //std::stringstream ss;
>>>         //ss << clss->name->bytes << ": could not create type
>>> descriptor for field " << get_name();
>>>         //jthrowable exn = exn_create("java/lang/OutOfMemoryError",
>>> ss.str().c_str());
>>> +        INFO2("oom", "out of memory when creating type desc");
>>>
>>> exn_raise_only(VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return false;
>>>     }
>>> diff --git vm/vmcore/src/class_support/classloader.cpp
>>> vm/vmcore/src/class_support/classloader.cpp
>>> index ea4e231..12e9ea1 100644
>>> --- vm/vmcore/src/class_support/classloader.cpp
>>> +++ vm/vmcore/src/class_support/classloader.cpp
>>> @@ -1139,8 +1139,7 @@ Class* ClassLoader::AllocateAndReportIns
>>>         if(new_java_lang_Class == NULL)
>>>         {
>>>             tmn_suspend_enable();
>>> -            // couldn't allocate java.lang.Class instance for  
>>> this class
>>> -            // ppervov: TODO: throw OutOfMemoryError
>>> +            INFO2("oom", "couldn't allocate java.lang.Class  
>>> instance
>>> for this class");
>>>             exn_raise_only(
>>>                 VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>             return NULL;
>>> diff --git vm/vmcore/src/exception/exceptions.cpp
>>> vm/vmcore/src/exception/exceptions.cpp
>>> index f37a0af..996d9c4 100644
>>> --- vm/vmcore/src/exception/exceptions.cpp
>>> +++ vm/vmcore/src/exception/exceptions.cpp
>>> @@ -153,6 +153,8 @@ static jthrowable create_exception(const
>>>
>>>     if (!e) {
>>>         tmn_suspend_enable();
>>> +        INFO2("oom", "out of memory on creating exception object "
>>> +                << exception_name);
>>>         return VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError;
>>>     }
>>>
>>> @@ -180,6 +182,8 @@ static jthrowable create_exception(const
>>>
>>>     if (!e) {
>>>         tmn_suspend_enable();
>>> +        INFO2("oom", "out of memory on creating exception object "
>>> +                << exception_name);
>>>         return VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError;
>>>     }
>>>
>>> @@ -216,6 +220,8 @@ static jthrowable create_exception(const
>>>
>>>     if (!exc_obj) {
>>>         tmn_suspend_enable();
>>> +        INFO2("oom", "out of memory on creating exception object "
>>> +                << exception_name);
>>>         return VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError;
>>>     }
>>>
>>> @@ -230,6 +236,8 @@ static jthrowable create_exception(const
>>>
>>>         if (!arg_obj) {
>>>             tmn_suspend_enable();
>>> +            INFO2("oom", "out of memory on creating exception  
>>> object "
>>> +                    << exception_name);
>>>             return
>>> VM_Global_State::loader_env->java_lang_OutOfMemoryError;
>>>         }
>>>
>>> diff --git vm/vmcore/src/jit/jit_runtime_support.cpp
>>> vm/vmcore/src/jit/jit_runtime_support.cpp
>>> index de30891..88d547c 100644
>>> --- vm/vmcore/src/jit/jit_runtime_support.cpp
>>> +++ vm/vmcore/src/jit/jit_runtime_support.cpp
>>> @@ -1834,6 +1834,7 @@ void *vm_malloc_with_thread_pointer(
>>>     assert(!tmn_is_suspend_enabled());
>>>     void *result = gc_alloc(size,ah,tp);
>>>     if (!result) {
>>> +        INFO2("oom", "out of gc heap memory");
>>>
>>> exn_throw(VM_Global_State::loader_env->java_lang_OutOfMemoryError);
>>>         return 0; // whether this return is reached or not is solved
>>> via is_unwindable state
>>>     }
>>> @@ -1863,6 +1864,7 @@ #endif //VM_STATS
>>>         gc_alloc(c->instance_data_size,
>>>             c->allocation_handle, vm_get_gc_thread_local());
>>>     if (!o) {
>>> +        INFO2("oom", "out of gc heap memory");
>>>         exn_throw(
>>>             VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         //tmn_suspend_enable();
>>> @@ -1887,6 +1889,7 @@ #endif //VM_STATS
>>>         gc_alloc(vtable->allocated_size,
>>>             vtable->clss->allocation_handle,  
>>> vm_get_gc_thread_local());
>>>     if (!o) {
>>> +        INFO2("oom", "out of gc heap memory");
>>>         exn_throw(
>>>             VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return NULL; // reached by interpreter and from JNI
>>> @@ -1916,6 +1919,7 @@ class_alloc_new_object_and_run_construct
>>>     obj->object = (ManagedObject*)
>>>         gc_alloc(clss->instance_data_size, clss->allocation_handle,
>>> vm_get_gc_thread_local());
>>>     if (!obj->object) {
>>> +        INFO2("oom", "out of gc heap memory");
>>>         exn_throw_only(
>>>             VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return 0; // should never be reached
>>> diff --git vm/vmcore/src/jni/jni.cpp vm/vmcore/src/jni/jni.cpp
>>> index b730214..7a3d6fa 100644
>>> --- vm/vmcore/src/jni/jni.cpp
>>> +++ vm/vmcore/src/jni/jni.cpp
>>> @@ -657,6 +657,7 @@ jobject JNICALL NewLocalRef(JNIEnv *env,
>>>     if (NULL == h)
>>>     {
>>>         tmn_suspend_enable();
>>> +        INFO2("oom", "out of native heap memory on creating local
>>> reference");
>>>         exn_raise_only(
>>>
>>> (jthrowable)(((JNIEnv_Internal*)env)->vm->vm_env- 
>>> >java_lang_OutOfMemoryError));
>>>
>>>         return NULL;
>>> diff --git vm/vmcore/src/jni/jni_utils.cpp
>>> vm/vmcore/src/jni/jni_utils.cpp
>>> index 185bb6c..1c1380c 100644
>>> --- vm/vmcore/src/jni/jni_utils.cpp
>>> +++ vm/vmcore/src/jni/jni_utils.cpp
>>> @@ -251,6 +251,7 @@ char* ParameterTypesToMethodSignature (J
>>>
>>>     if (NULL == sig) {
>>>         //throw_exception_from_jni (env, "java/lang/ 
>>> OutOfMemoryError",
>>> name);
>>> +        INFO2("oom", "out of memory on creating class signature");
>>>
>>> exn_raise_only(VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return (char *)0;
>>>     }
>>> diff --git vm/vmcore/src/object/vm_arrays.cpp
>>> vm/vmcore/src/object/vm_arrays.cpp
>>> index 5f407fc..73acaf6 100644
>>> --- vm/vmcore/src/object/vm_arrays.cpp
>>> +++ vm/vmcore/src/object/vm_arrays.cpp
>>> @@ -106,6 +106,7 @@ #ifdef VM_STATS
>>>  #endif //VM_STATS
>>>
>>>     if (NULL == object_array) {
>>> +        INFO2("oom", "out of java heap memory on allocating  
>>> array");
>>>         exn_throw(
>>>             VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return NULL; // may be reached on interpreter or when called
>>> from jni
>>> @@ -152,6 +153,7 @@ #ifdef VM_STATS
>>>  #endif //VM_STATS
>>>
>>>     if (NULL == vector) {
>>> +        INFO2("oom", "out of java heap memory on allocating  
>>> primitive
>>> array");
>>>         exn_throw(
>>>             VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return 0; // may be reached when interpreter is used
>>> @@ -227,6 +229,7 @@ #endif //VM_STATS
>>>     assert( ! tmn_is_suspend_enabled());
>>>
>>>     if (NULL == vector) {
>>> +        INFO2("oom", "out of java heap memory on allocating  
>>> array");
>>>         exn_throw(
>>>             VM_Global_State::loader_env- 
>>> >java_lang_OutOfMemoryError);
>>>         return 0; // should never be reached
>>> diff --git vm/vmcore/src/thread/object_generic.cpp
>>> vm/vmcore/src/thread/object_generic.cpp
>>> index 11296e5..234c340 100644
>>> --- vm/vmcore/src/thread/object_generic.cpp
>>> +++ vm/vmcore/src/thread/object_generic.cpp
>>> @@ -387,6 +387,7 @@ jobject object_clone(JNIEnv *jenv, jobje
>>>     }
>>>     if (result == NULL) {
>>>         tmn_suspend_enable();
>>> +        INFO2("oom", "out of java heap memory on cloning object");
>>>
>>> exn_throw(VM_Global_State::loader_env->java_lang_OutOfMemoryError);
>>>         return NULL;
>>>     }
>>> diff --git vm/vmcore/src/util/vm_strings.cpp
>>> vm/vmcore/src/util/vm_strings.cpp
>>> index f1fe7cb..7bf04b2 100644
>>> --- vm/vmcore/src/util/vm_strings.cpp
>>> +++ vm/vmcore/src/util/vm_strings.cpp
>>> @@ -245,6 +245,7 @@ static void string_create(unsigned unico
>>>     Vector_Handle array = gc_alloc(sz, clss->allocation_handle,
>>> vm_get_gc_thread_local());
>>>     if (!array) { // OutOfMemory should be thrown
>>>         *str = NULL;
>>> +        INFO2("oom", "out of java heap memory on string creation");
>>>
>>> exn_throw(VM_Global_State::loader_env->java_lang_OutOfMemoryError);
>>>         return;
>>>     }
>>>
>>>
>>> -------------------------------------------------------------------- 
>>> -
>>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>>> For additional commands, e-mail: harmony-dev- 
>>> help@incubator.apache.org
>>>
>>>
>>
>>
>
> -- 
>
> Tim Ellison (t.p.ellison@gmail.com)
> IBM Java technology centre, UK.
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message