On 4/4/2012 11:18 PM, Martijn Verburg wrote:
Hi Hinkmond,
Is there a corpus of code you can look at in the embedded space to see
what ratio of real-world apps use a lot of reflection? We have access
to a corpus in the SE space (some Cambridge PhD students that work
with us) and I know Brian/Joe et al use one internally at Oracle as
well, would be an interesting comparison.
Hi Martin,
There is no corpus of sample code for Embedded that I know of. Maybe
Bob Vandette or David Holmes knows of one for Java SE desktop/server
also? But, we've discussed in our team, possibilities for more
embedded-appropriate real-world apps and are in process of obtaining
those now from different embedded developers. If anyone out there has
any suggestions, please send them in. Some that we've considered
include various OSGi implementations for embedded and Jetty.
Can you send a pointer to the SE corpus of code that you know of (the
one you mentioned that the Cambridge PhD students worked on)? Or, is
that Brian Goetz and Joe Darcy that you mean who have used it before at
Oracle?
Thanks,
Hinkmond
On 5 April 2012 09:07, Hinkmond Wong <hinkmond.w...@oracle.com
<mailto:hinkmond.w...@oracle.com>> wrote:
Hi Brian,
One of the issues we have in the Java Embedded group (as David
points out in his summary), is that while on paper the theoretical
max savings seems great (as you point out also), in practice as
David points out in his note, this might be a wash if there are a
lot more reflection using classes vs. non-reflection using classes
in "typical" real-world applications, not the low or zero
reflection using class ratio that happens in the theoretical "best
case".
So, a question comes up if we should judge the merit of this
change on the theoretical "best case" scenario, or should we judge
it on real-world applicability to "typical" apps (such as a finite
set of customer surveyed embedded apps that we feel represent a
real-world scenario).
Thanks,
Hinkmond
On 4/4/12 8:28 PM, Brian Goetz wrote:
Reducing the number of SoftReferences in ReflectionHelper also
seems an attractive target for memory reduction. Rather than
eight soft references (eight extra objects), maintaining a
SoftRef to the entire RH, or at least to the part of the RH
that is currently SR'ed if the two non-SR'ed fields can't be
recomputed, would save you a whole pile of objects per class
(and might also reduce pressure on GC, having 8x fewer SRs to
process.)
Finally, you may be able save an extra field per Class by
storing the ReflectionHelper in a ClassValue on Java SE 8,
rather than a field.
On 4/4/2012 10:50 PM, David Holmes wrote:
http://cr.openjdk.java.net/~dholmes/JEP-149/webrev/
<http://cr.openjdk.java.net/%7Edholmes/JEP-149/webrev/>
This is an early look at a proposed change to reduce the
instance size
of Java Class objects in the common case that reflection
is not used.
In SE 7 a java.lang.Class instance is 104 bytes on 32-bit
systems. It
consists of the 8-byte object header, 19 declared fields
and 5 injected
fields (fields added by the VM as-if they were declared in
java.lang.Class but which do not appear in the Java source
code). There
are 10 reference fields associated with reflection caching
that can be
moved to a helper object with no impact on the VM or
serialization
protocols. Adding back a reference for the helper, that
saves 9
references. Notionally this is 36 bytes on 32-bit but due
to 8-byte
alignment it only saves 32 bytes. That gives a size of 72
bytes - a
reduction of 30%. This initial modification has been
prototyped for
initial performance measurements.
Note that if reflection is used then the amount of memory
used by the
Class will increase by 8-bytes - that being the additional
object header
of the ReflectionHelper instance. So the net gain depends
on the ratio
of reflection using classes to non-reflection-using
classes in an
application.
Please note that I've put this out just before I disappear
on vacation
for 10 days, so if you don't see any responses from me
that is why. :)
Thanks,
David Holmes
--
Oracle <http://www.oracle.com>
Hinkmond Wong | Consulting Member of Technical Staff
Phone: _+1 408.276.7618 <tel:%2B1%20408.276.7618>_ | Fax: _+1
408.276.7674 <tel:%2B1%20408.276.7674>_
Oracle Java Embedded
4210 Network Ci., M/S USCA22-rm2364 | Santa Clara, CA 95054
Green Oracle <http://www.oracle.com/commitment> Oracle is
committed to developing practices and products that help protect
the environment
--
Oracle <http://www.oracle.com>
Hinkmond Wong | Consulting Member of Technical Staff
Phone: _+1 408.276.7618_ | Fax: _+1 408.276.7674_
Oracle Java Embedded
4210 Network Ci., M/S USCA22-rm2364 | Santa Clara, CA 95054
Green Oracle <http://www.oracle.com/commitment> Oracle is committed to
developing practices and products that help protect the environment