@@ -77,15 +77,17 @@ public void checkBadSerVer() {
7777 @ Test (expectedExceptions = SketchesArgumentException .class )
7878 public void checkConstructorKtooSmall () {
7979 int k = 8 ;
80- WritableMemory mem = makeNativeMemory (k );
81- UpdateSketch .builder ().setNominalEntries (k ).build (mem );
80+ try (WritableMemory mem = makeNativeMemory (k )) {
81+ UpdateSketch .builder ().setNominalEntries (k ).build (mem );
82+ }
8283 }
8384
8485 @ Test (expectedExceptions = SketchesArgumentException .class )
8586 public void checkConstructorMemTooSmall () {
8687 int k = 16 ;
87- WritableMemory mem = makeNativeMemory (k /2 );
88- UpdateSketch .builder ().setNominalEntries (k ).build (mem );
88+ try (WritableMemory mem = makeNativeMemory (k /2 )) {
89+ UpdateSketch .builder ().setNominalEntries (k ).build (mem );
90+ }
8991 }
9092
9193 @ Test (expectedExceptions = SketchesArgumentException .class )
@@ -589,7 +591,7 @@ public void checkEstModeNativeMemory() {
589591 int u = 2 *k ;
590592 int memCapacity = (k << 4 ) + (Family .QUICKSELECT .getMinPreLongs () << 3 );
591593
592- try (WritableMemory mem = WritableMemory .allocateDirect (memCapacity )) {
594+ try (WritableMemory mem = WritableMemory .allocateDirect (memCapacity )) { //will not request more memory
593595 UpdateSketch usk = UpdateSketch .builder ().setNominalEntries (k ).build (mem );
594596 DirectQuickSelectSketch sk1 = (DirectQuickSelectSketch )usk ; //for internal checks
595597 assertTrue (usk .isEmpty ());
@@ -599,6 +601,10 @@ public void checkEstModeNativeMemory() {
599601 println ("" +est );
600602 assertEquals (usk .getEstimate (), u , u *.05 );
601603 assertTrue (sk1 .getRetainedEntries (false ) > k );
604+ Memory mem2 = usk .getMemory ();
605+ assertTrue (mem2 .isAlive ());
606+ assertTrue (mem2 .isDirect ()); //still off heap.
607+ assertTrue (mem2 .isSameResource (mem ));
602608 }
603609 }
604610
@@ -774,20 +780,22 @@ public void checkMoveAndResize() {
774780 int k = 1 << 12 ;
775781 int u = 2 * k ;
776782 int bytes = Sketches .getMaxUpdateSketchBytes (k );
777- WritableMemory wmem = WritableMemory .allocateDirect (bytes /2 ); //will request
783+ WritableMemory wmem = WritableMemory .allocateDirect (bytes /2 ); //will request more memory
778784 UpdateSketch sketch = Sketches .updateSketchBuilder ().setNominalEntries (k ).build (wmem );
779785 assertTrue (sketch .isSameResource (wmem ));
780786 for (int i = 0 ; i < u ; i ++) { sketch .update (i ); }
781- assertTrue (sketch .getMemory ().isAlive ());
782- assertFalse (wmem .isAlive ());
787+ Memory mem = sketch .getMemory ();
788+ assertTrue (mem .isAlive ());
789+ assertFalse (mem .isDirect ()); //now on heap.
790+ assertFalse (wmem .isAlive ()); //wmem closed by MemoryRequestServer
783791 }
784792
785793 @ Test
786794 public void checkReadOnlyRebuildResize () {
787795 int k = 1 << 12 ;
788796 int u = 2 * k ;
789797 int bytes = Sketches .getMaxUpdateSketchBytes (k );
790- WritableMemory wmem = WritableMemory .allocateDirect (bytes /2 ); //will request
798+ WritableMemory wmem = WritableMemory .allocateDirect (bytes /2 ); //will request more memory
791799 UpdateSketch sketch = Sketches .updateSketchBuilder ().setNominalEntries (k ).build (wmem );
792800 for (int i = 0 ; i < u ; i ++) { sketch .update (i ); }
793801 double est1 = sketch .getEstimate ();
@@ -796,6 +804,10 @@ public void checkReadOnlyRebuildResize() {
796804 UpdateSketch roSketch = (UpdateSketch ) Sketches .wrapSketch (mem );
797805 double est2 = roSketch .getEstimate ();
798806 assertEquals (est2 , est1 );
807+ Memory mem2 = sketch .getMemory ();
808+ assertTrue (mem2 .isAlive ());
809+ assertFalse (mem2 .isDirect ()); //now on heap
810+ assertFalse (wmem .isAlive ()); //wmem closed by MemoryRequestServer
799811 try {
800812 roSketch .rebuild ();
801813 fail ();
0 commit comments