JDK-8003424 : Enable Class Data Sharing for CompressedOops
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: hs25
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2012-11-14
  • Updated: 2014-06-26
  • Resolved: 2013-08-16
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 Other
8Fixed hs25Fixed
Related Reports
Relates :  
Relates :  
Description
Create a shared archive with compressed oops on with -Xshare:dump and verify that compressed oops is on for -Xshare:on.   It's not really worth creating a CDS archive for -d64 with compressed oops off since this is not a default for performance and footprint reasons.

UseCompressedKlassPointers should be off for this configuration.   This requires mmaping the CDS archive which has a fixed address at dump time, and Java Heap separately but compatibly so they can use the same heap base encoding scheme.   Even though compressed klass pointers and compressed oops are pretty well separated in the code, their encoding isn't completely separate (someone correct me!)


Comments
The class indirection table idea is not performant so this request is higher priority for jdk8. It's also higher priority since it will help alleviate the compressed class space limitation that we have now, which is a high priority.
23-05-2013

Is this bug for both UseCompressedOops and UseCompressedKlassPointers, or just for UseCompressedKlassPointers? It seems UseCompressedOops should just work (at least after UseCompressedKlassPointers has been fixed for CDS).
21-05-2013

We're testing out a class indirection table in 32 bit space to compress klass pointers into. If this works out okay (without performance degredation), then it changes how UseCompressedKlassPointers will work with CDS. The CDS archive won't have to be co-located with the Java heap. I can be anywhere, but when we read the archive, we can add entries to the table when we restore_unshareable_info if UseCompressedKlassPointers is on.
13-03-2013

I think we had proposed that we would have a CDS archive for uncompressed and one for full compression - compressedoops and compressedklasspointers.
13-03-2013