当前位置: 首页 > 面试题库 >

如何找出Java应用程序当前打开的文件数?

萧繁
2023-03-14
问题内容

假设您的应用程序所做的很多事情都与读取文件内容有关。不用说,打开然后关闭的文件很有效,除非…新文件的传入速度比旧文件快。这是我发现自己遇到的情况的泡菜。

现在,有没有办法可靠地知道该进程打开了多少文件?像ls /proc/my_pid/fd | wc -l从JVM内部看一样可靠的东西吗?

我怀疑答案可能是特定于操作系统的,所以让我补充一点,我在Linux上运行Java。


问题答案:

在Unix上,一种方法是使用ManagementFactory获取方法OperatingSystemMxBean,如果是UnixOperatingSystemMXBean,则可以使用该getOpenFileDescriptorCount()方法。

示例代码:

import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import com.sun.management.UnixOperatingSystemMXBean;

public class OpenFileCount{
    public static void main(String[] args){
        OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
        if(os instanceof UnixOperatingSystemMXBean){
            System.out.println("Number of open fd: " + ((UnixOperatingSystemMXBean) os).getOpenFileDescriptorCount());
        }
    }
}


 类似资料:
  • 问题内容: 我的应用程序将PDF打印到一个临时文件。如何使用Python中的默认应用程序打开该文件? 我需要一个解决方案 window Linux(如果没有更通用的功能,则使用带有Xfce的Ubuntu)。 问题答案: os.startfile暂时仅适用于Windows,但是xdg- open 将在运行X的任何UNIX客户端上可用。

  • 问题内容: 有什么方法可以使代码以独立于平台的方式在Java应用程序中打开PDF文件?我的意思是在Windows中使用批处理文件可以做到这一点。还有其他方法可以使平台独立的代码即时打开PDF文件吗? 问题答案: 我会尝试,其中: 启动关联的应用程序以打开文件。 因此,此代码应该可以解决问题:

  • 当我试图在Xamarin/Android应用程序中写入文本文件时,我会间歇性地遇到太多打开文件异常。我明白这是因为每个Android应用程序都有打开文件的数量限制,很明显,我的应用程序在某些情况下超过了它。因此,我必须留下一些文件打开/没有妥善处理。我想知道我是否可以通过编程列出我的应用程序在任何给定时间打开的文件?显然,操作系统知道这一点,有可能在我的应用程序中做到这一点吗?这将帮助我发现问题。

  • 问题内容: 如何使用Java中的默认关联程序打开文件?(例如电影文件) 问题答案: 你可以使用Desktop.getDesktop().open(File file)。 似乎无法使用java.awt.Desktop,必须区分以下操作系统:Windows: Linux: 苹果电脑: HTH。显然,这不是便携式的…

  • 这里是我的代码,我给出了错误发生的注释行(在catch异常中)。有人能帮忙吗?非常感谢。代码: 下面是错误消息:java.lang.RuntimeException:无法在Android.app.ActivityThread.Handlereceiver(ActivityThread.java:2732)启动接收器Android.os.NetworkonMainThreadException...

  • 我有一个电子应用程序,可以在单独的选项卡中编辑多个文件,比如Atom或VS代码。当通过对话框打开文件时,或者当应用程序未运行(通过解析argv)时,通过“打开方式”打开文件时,此功能可以正常工作。 然而,我不知道如何将通过“打开”打开的文件“添加”到已经运行的应用程序——默认情况下,会创建该应用程序的第二个新实例。我希望能够以某种方式将文件的路径传递给原始应用实例。 我浏览了文档,发现唯一有希望的