< prev index next >
src/share/vm/runtime/arguments.cpp
Print this page
@@ -81,10 +81,11 @@
int Arguments::_num_jvm_flags = 0;
char** Arguments::_jvm_args_array = NULL;
int Arguments::_num_jvm_args = 0;
char* Arguments::_java_command = NULL;
SystemProperty* Arguments::_system_properties = NULL;
+const char* Arguments::_gc_log_filename = NULL;
bool Arguments::_has_profile = false;
size_t Arguments::_conservative_max_heap_alignment = 0;
size_t Arguments::_min_heap_size = 0;
Arguments::Mode Arguments::_mode = _mixed;
bool Arguments::_java_compiler = false;
@@ -3088,10 +3089,14 @@
// note this flag has been used, then ignore
set_xdebug_mode(true);
// -Xnoagent
} else if (match_option(option, "-Xnoagent")) {
// For compatibility with classic. HotSpot refuses to load the old style agent.dll.
+ } else if (match_option(option, "-Xloggc:", &tail)) {
+ // Deprecated flag to redirect GC output to a file. -Xloggc:<filename>
+ log_warning(gc)("-Xloggc is deprecated. Will use -Xlog:gc:%s instead.", tail);
+ _gc_log_filename = os::strdup_check_oom(tail);
} else if (match_option(option, "-Xlog", &tail)) {
bool ret = false;
if (strcmp(tail, ":help") == 0) {
LogConfiguration::print_command_line_help(defaultStream::output_stream());
vm_exit(0);
@@ -3997,10 +4002,28 @@
logOption(tail);
}
}
}
+bool Arguments::handle_deprecated_print_gc_flags() {
+ if (PrintGC) {
+ log_warning(gc)("-XX:+PrintGC is deprecated. Will use -Xlog:gc instead.");
+ }
+ if (PrintGCDetails) {
+ log_warning(gc)("-XX:+PrintGCDetails is deprecated. Will use -Xlog:gc* instead.");
+ }
+
+ if (_gc_log_filename != NULL) {
+ // -Xloggc was used to specify a filename
+ const char* gc_conf = PrintGCDetails ? "gc*" : "gc";
+ return LogConfiguration::parse_log_arguments(_gc_log_filename, gc_conf, NULL, NULL, NULL);
+ } else if (PrintGC || PrintGCDetails) {
+ LogConfiguration::configure_stdout(LogLevel::Info, !PrintGCDetails, LOG_TAGS(gc));
+ }
+ return true;
+}
+
// Parse entry point called from JNI_CreateJavaVM
jint Arguments::parse(const JavaVMInitArgs* initial_cmd_args) {
assert(verify_special_jvm_flags(), "deprecated and obsolete flag table inconsistent");
@@ -4145,10 +4168,14 @@
warning("Forcing ScavengeRootsInCode non-zero");
}
ScavengeRootsInCode = 1;
}
+ if (!handle_deprecated_print_gc_flags()) {
+ return JNI_EINVAL;
+ }
+
// Set object alignment values.
set_object_alignment();
#if !INCLUDE_ALL_GCS
force_serial_gc();
< prev index next >