it-swarm-vi.tech

Làm cách nào tôi có thể ngăn Java tạo tệp hsperfdata?

Tôi đang viết một ứng dụng Java chạy trên Linux (sử dụng JDK của Sun). Nó tiếp tục tạo /tmp/hsperfdata_username thư mục, mà tôi muốn ngăn chặn. Có cách nào để ngăn chặn Java khi tạo các tệp này không?

44
c-had

Hãy thử tùy chọn JVM - XX: -UsePerfData

thêm thông tin

Những điều sau đây có thể hữu ích từ liên kết https://docs.Oracle.com/javase/8/docs/technotes/tools/unix/Java.html

-XX:+UsePerfData

    Enables the perfdata feature. This option is enabled by default
    to allow JVM monitoring and performance testing. Disabling it 
    suppresses the creation of the hsperfdata_userid directories. 
    To disable the perfdata feature, specify -XX:-UsePerfData.
32
Kyle Renfro

Sử dụng tùy chọn JVM -XX:-UsePerfData.

Điều này sẽ không có tác động tiêu cực đến hiệu suất, như một số câu trả lời khác nói.

Theo mặc định, thiết bị jvmstat được bật trong JVM HotSpot. Tùy chọn JVM -XX:-UsePerfData tắt nó đi. Nếu bất cứ điều gì, tôi sẽ suy đoán, tắt các thiết bị sẽ cải thiện hiệu suất (một số tiền không đáng kể).

Vì vậy, nhược điểm của việc tắt thiết bị jvmstat là bạn mất thông tin giám sát hiệu suất.

jvmstat được mô tả ở đây http://Java.Sun.com/performance/jvmstat/

Đây là một chủ đề với ai đó lo lắng rằng bằng cách bật trên jvmstat - với tùy chọn -XX:+UsePerfData - sẽ làm tổn thương hiệu suất. http://www.theserverside.com/discussions/thread.tss?thread_id=338
[.__.] (Có lẽ sẽ không có vì jvmstat được thiết kế để "luôn luôn bật", nhưng có tác động hiệu suất không đáng kể ".)

31
Jon Stafford

Thay vì tắt nó, hãy thay đổi vị trí Java.io.tmpdir. Thêm -Djava.io.tmpdir =/mydir/where/other/vào your Java lệnh khởi động và sau đó tệp sẽ ở đâu đó mà bạn kiểm soát.


Lưu ý một nhận xét của @simonc: điều này chỉ hoạt động trong một vài phiên bản của JVM và không còn được hỗ trợ. Xem http://bugs.Sun.com/view_orms.do?orms_id=6447182 , http: // lỗi.Sun.com/view_orms.do?orms_id=6938627 , http://bugs.Sun.com/view_orms.do?orms_id=7009828 để biết thêm thông tin.

4
Mack

Là phần phụ lục cho câu trả lời của Mack (đã trả lời ngày 25 tháng 3 năm 11 lúc 17:12), tùy chọn Java.tmp.dir trông không còn khả dụng kể từ Java 8. Xem thông tin tại: https://bugs.Java.com/view_orms.do?orms_id=8189674

Vì vậy, vô hiệu hóa tùy chọn bằng cách sử dụng -XX: -UsePerfData dường như là tùy chọn duy nhất không có tệp hsperfdata_ *.

1
user6494409

Ngoài ra còn có "-XX:+PerfDisableSharedMem" tùy chọn (được đề xuất bởi Sun) sẽ gây ra các vấn đề về hiệu suất ít hơn so với việc sử dụng "-XX:-UsePerfData" Lựa chọn.

1
Zweiberg

EDIT: Dọn dẹp thông tin và tóm tắt

Tóm lược:

  • Đây là một tính năng, không phải là một lỗi
  • Nó có thể được bật bằng -XX: -UsePerfData có thể ảnh hưởng đến hiệu suất

Thông tin liên quan:

1
svrist

Từ liên kết của Svrist:

Mục đầu tiên trong http://Java.Sun.com/performance/jvmstat/faq.html đề cập đến một tùy chọn mà bạn có thể tắt để tắt toàn bộ bộ tính năng: -XX: -UsePerfData.

1
Stu Thompson

Theo báo cáo lỗi đã nộp có một cách giải quyết:

Tùy chọn không có giấy tờ này sẽ vô hiệu hóa tính năng perfdata:
[.__.] - XX: -UsePerfData

Điều đáng nói là nó là một tính năng, không phải là một lỗi. Các công việc trên chỉ vô hiệu hóa tính năng.

1
SCdF