543 }
544
545 if (check_capability_error((*jvmti)->GetGarbageTraces(jvmti, NULL),
546 "Get Garbage Traces")) {
547 return FALSE;
548 }
549
550 if (check_capability_error((*jvmti)->GetFrequentGarbageTraces(jvmti, NULL),
551 "Get Frequent Garbage Traces")) {
552 return FALSE;
553 }
554
555 if (check_capability_error((*jvmti)->GetLiveTraces(jvmti, NULL),
556 "Get Live Traces")) {
557 return FALSE;
558 }
559 return TRUE;
560 }
561
562 JNIEXPORT jboolean JNICALL
563 Java_MyPackage_HeapMonitorStatCorrectnessTest_statsHaveExpectedNumberSamples(JNIEnv *env,
564 jclass cls,
565 int expected,
566 int percent_error) {
567 jvmtiHeapSamplingStats stats;
568 check_error((*jvmti)->GetHeapSamplingStats(jvmti, &stats),
569 "Heap Sampling Statistics");
570
571 double diff_ratio = (stats.sample_count - expected);
572 diff_ratio = (diff_ratio < 0) ? -diff_ratio : diff_ratio;
573 diff_ratio /= expected;
574
575 return diff_ratio * 100 < percent_error;
576 }
577
578 JNIEXPORT jdouble JNICALL
579 Java_MyPackage_HeapMonitorStatRateTest_getAverageRate(JNIEnv *env, jclass cls) {
580 jvmtiHeapSamplingStats stats;
581 check_error((*jvmti)->GetHeapSamplingStats(jvmti, &stats),
582 "Heap Sampling Statistics");
583 return ((double) stats.sample_rate_accumulation) / stats.sample_rate_count;
584 }
585
586 JNIEXPORT jdouble JNICALL
587 Java_MyPackage_HeapMonitorStackDepthTest_getAverageStackDepth(JNIEnv *env,
588 jclass cls) {
589 jvmtiStackTraces traces;
590 jvmtiError error = (*jvmti)->GetLiveTraces(jvmti, &traces);;
|
543 }
544
545 if (check_capability_error((*jvmti)->GetGarbageTraces(jvmti, NULL),
546 "Get Garbage Traces")) {
547 return FALSE;
548 }
549
550 if (check_capability_error((*jvmti)->GetFrequentGarbageTraces(jvmti, NULL),
551 "Get Frequent Garbage Traces")) {
552 return FALSE;
553 }
554
555 if (check_capability_error((*jvmti)->GetLiveTraces(jvmti, NULL),
556 "Get Live Traces")) {
557 return FALSE;
558 }
559 return TRUE;
560 }
561
562 JNIEXPORT jboolean JNICALL
563 Java_MyPackage_HeapMonitor_statsHaveExpectedNumberSamples(JNIEnv *env,
564 jclass cls,
565 int expected,
566 int percent_error) {
567 jvmtiHeapSamplingStats stats;
568 check_error((*jvmti)->GetHeapSamplingStats(jvmti, &stats),
569 "Heap Sampling Statistics");
570
571 fprintf(stderr, "Sample data count %ld, rate %ld, rate count %ld\n",
572 stats.sample_count, stats.sample_rate_accumulation, stats.sample_rate_count);
573 double diff_ratio = (stats.sample_count - expected);
574 diff_ratio = (diff_ratio < 0) ? -diff_ratio : diff_ratio;
575 diff_ratio /= expected;
576
577 return diff_ratio * 100 < percent_error;
578 }
579
580 JNIEXPORT jdouble JNICALL
581 Java_MyPackage_HeapMonitorStatRateTest_getAverageRate(JNIEnv *env, jclass cls) {
582 jvmtiHeapSamplingStats stats;
583 check_error((*jvmti)->GetHeapSamplingStats(jvmti, &stats),
584 "Heap Sampling Statistics");
585 return ((double) stats.sample_rate_accumulation) / stats.sample_rate_count;
586 }
587
588 JNIEXPORT jdouble JNICALL
589 Java_MyPackage_HeapMonitorStackDepthTest_getAverageStackDepth(JNIEnv *env,
590 jclass cls) {
591 jvmtiStackTraces traces;
592 jvmtiError error = (*jvmti)->GetLiveTraces(jvmti, &traces);;
|