Topic "hsperfdata_<USER> dirctories" was updated by briansully with the following message:
------------------------------------------------
From googling the net and searching these forums I understand the JVM needs to create the hsperfdata files. I can live with that I guess. My problem is that the JVM always creates them in /tmp on my SuSE Enterprise 9 server. I need to be able to specify the location of these files. I tried setting environment variables, TMP and TEMP. That did not work. I tried a -Djava.io.tmpdir=/mydir and that did not work.
I went to the JVM source and found in perfMemory_linux.cpp:
static char* get_user_tmp_dir(const char* user) {
const char* tmpdir = os::get_temp_directory();
const char* perfdir = PERFDATA_NAME;
size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 2;
char* dirname = NEW_C_HEAP_ARRAY(char, nbytes);
// construct the path name to user specific tmp directory
snprintf(dirname, nbytes, "%s%s_%s", tmpdir, perfdir, user);
return dirname;
}
I then tracked down this get_temp_directory function and found this in os_linux.cpp:
const char* os::get_temp_directory() { return "/tmp/"; }
So this means the JVM is hard coded to access /tmp. There is no reason the JVM should be hardcoded to such a location, it should be customizable through some sort of parameter. Anyone have ideas?
------------------------------------------------
To view the topic, visit:
http://forum.java.sun.com/thread.jspa?forumID=37&threadID=750466
------------------------------------------------
From googling the net and searching these forums I understand the JVM needs to create the hsperfdata files. I can live with that I guess. My problem is that the JVM always creates them in /tmp on my SuSE Enterprise 9 server. I need to be able to specify the location of these files. I tried setting environment variables, TMP and TEMP. That did not work. I tried a -Djava.io.tmpdir=/mydir and that did not work.
I went to the JVM source and found in perfMemory_linux.cpp:
static char* get_user_tmp_dir(const char* user) {
const char* tmpdir = os::get_temp_directory();
const char* perfdir = PERFDATA_NAME;
size_t nbytes = strlen(tmpdir) + strlen(perfdir) + strlen(user) + 2;
char* dirname = NEW_C_HEAP_ARRAY(char, nbytes);
// construct the path name to user specific tmp directory
snprintf(dirname, nbytes, "%s%s_%s", tmpdir, perfdir, user);
return dirname;
}
I then tracked down this get_temp_directory function and found this in os_linux.cpp:
const char* os::get_temp_directory() { return "/tmp/"; }
So this means the JVM is hard coded to access /tmp. There is no reason the JVM should be hardcoded to such a location, it should be customizable through some sort of parameter. Anyone have ideas?
------------------------------------------------
To view the topic, visit:
http://forum.java.sun.com/thread.jspa?forumID=37&threadID=750466
- duplicates
-
JDK-6760316 JVM crashes on systems without swapping and no space left in temp dir
- Closed
-
JDK-6938627 Make temporary directory use property java.io.tmpdir when specified
- Closed
- relates to
-
JDK-7009828 Fix for 6938627 breaks visualvm monitoring when -Djava.io.tmpdir is defined
- Closed