java入坑之运行管理

一、概述

1.1Java开发和运行过程

  • 编写阶段:采用各种编辑工具,编写.java文件
  • 编译阶段:采用javac.exe对java文件编译,产生.class文件
  • 运行阶段:采用java.exe加载.class文件运行

详细过程

1.2相关概念

javaOS管理

JavaOS是一个基于Java语言的操作系统,它的管理主要涉及以下几个方面:

1. 资源管理:JavaOS需要管理计算机上的各种资源,如内存、磁盘空间、CPU等。操作系统需要协调这些资源,使它们能够有效地被应用程序使用。

2. 进程管理:JavaOS需要管理运行在计算机上的各种应用程序,这些应用程序是由多个进程组成的。操作系统需要管理这些进程,为它们分配资源,控制它们的执行顺序和时间片等。

3. 文件系统管理:JavaOS需要管理计算机上的文件系统,包括文件的创建、读写、删除等操作。操作系统需要维护文件的目录结构,确保文件系统的完整性和安全性。

4. 网络管理:JavaOS需要管理计算机上的网络资源,如网卡、网络连接等。操作系统需要提供网络服务,如TCP/IP协议栈、网络文件共享等。

5. 设备驱动程序管理:JavaOS需要管理计算机上的各种设备驱动程序,如打印机驱动程序、音频驱动程序等。操作系统需要确保设备驱动程序的正确性和稳定性。

以上是JavaOS管理的几个方面,其中最重要的是资源管理和进程管理,因为它们直接影响了操作系统的性能和稳定性。

 java JVM管理

JVM是负责将Java程序编译成字节码并将其解释执行的环境。JVM还为程序提供内存管理、垃圾回收、线程管理等服务。

以下是JVM管理的一些重要方面:

1. 内存管理:JVM会为程序分配内存空间,并在需要时动态分配更多的内存。它还负责释放不再使用的内存,以防止程序泄漏内存和崩溃。

2. 垃圾回收:JVM会自动监视程序的内存使用情况,并在必要时自动清理不再使用的内存空间。这称为垃圾回收。垃圾回收可确保程序不会浪费内存并避免内存泄漏。

3. 线程管理:JVM管理程序的线程,确保它们在正确的时间运行,并协调它们之间的共享资源。JVM可以检测线程死锁和死循环,并采取措施避免这些问题。

4. 类加载:JVM负责将程序中使用的类加载到内存中,以便可以执行其方法。

5. 执行引擎:JVM还有一个执行引擎,它可以解释字节码并将其转换为机器代码,以便能够在计算机上运行。

JVM管理对于Java程序的正常运行至关重要,因此开发人员需要确保在开发过程中优化程序以减少内存使用和资源消耗。

 二、OS管理

2.1管理命令概述

2.2top命令

命令在linux章节中详细描述,在此不做赘述

Linux top命令用于实时显示进程的动态,例如CPU使用率、内存使用情况、进程数等信息。以下是常用的top命令选项和参数:

- -d <秒数>:设置top命令更新进程信息的时间间隔。
- -H:显示进程的线程信息。
- -p <进程号>:只显示指定进程的信息。
- -u <用户名>:只显示指定用户的进程信息。
- -i:不显示闲置进程(IDLE)。
- -c:显示完整的命令行信息。
- -b:以批处理模式运行,将结果输出到文件中。

top命令的交互式命令:

- d:改变刷新时间间隔。
- q:退出top命令。
- k:杀死指定进程。
- r:修改指定进程的优先级。
- s:改变top命令的显示方式,可以选择按CPU使用率或内存使用率排序。
- h:查看帮助信息。

2.3vmstat命令

 vmstat(virtual memory statistics)命令是一个强大的系统性能分析工具,在Linux系统中被广泛使用。vmstat命令可以显示虚拟内存、进程、CPU活动等系统性能信息。下面是vmstat命令的详细介绍。

命令格式:

vmstat [选项] [时间间隔] [重复次数]

常用选项:

- -a:显示活动和非活动内存的详细信息。
- -d:显示磁盘活动的信息。
- -p:显示进程详细信息。
- -s:显示系统内存的统计信息。

时间间隔和重复次数:用于指定命令显示的时间间隔和显示的次数,默认时间间隔是1秒,重复次数是无限次,可以通过使用Ctrl+C或指定重复次数来停止命令执行。

vmstat命令输出结果解释:

- r:等待运行的进程数。
- b:处于非中断或可中断睡眠状态的进程数。
- swpd:交换内存使用量。
- free:空闲内存数量。
- buff:缓存内存数量。
- cache:缓存内存数量。
- si:每秒从磁盘交换到内存的数据量。
- so:每秒从内存交换到磁盘的数据量。
- bi:每秒从磁盘读取的块数。
- bo:每秒写入磁盘的块数。
- in:每秒中断次数。
- cs:每秒CPU上下文切换次数。
- us:用户空间程序消耗CPU时间百分比。
- sy:内核空间程序消耗CPU时间百分比。
- id:CPU空闲时间百分比。
- wa:等待I/O操作完成的CPU时间百分比。

2.4iostat命令

 2.5windows任务管理器

2.6 perfmon工具

2.7进一步

三、JDK管理工具(JVM管理)

3.1工具概述


 3.2jps工具

jps (Java Virtual Machine Process Status Tool) 是一个命令行工具,用于显示正在运行的 Java 进程的进程 ID(PID)和类名。jps 工具可用于快速查找正在运行的 Java 进程,以便进行调试或监视。jps 命令用法如下:

jps [-q] [-m] [-l] [-v] 

其中,-q 仅显示进程 ID,-m 显示进程 ID 和程序名,-l 显示进程 ID 和全限定程序类名,-v 显示进程 ID、全限定程序类名和传递给 JVM 的参数。默认情况下,jps 显示进程 ID 和程序名。

.3.3jstat工具

jstat 是 Java 中的一个工具命令,它可以用来监视 JVM 的各种状态和性能指标。使用 jstat 命令可以实时查看 JVM 的堆内存使用情况、GC 情况、类加载情况等等,可以帮助开发者定位应用程序性能问题,优化 JVM 的配置。

jstat 命令的语法格式如下:

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]

其中,generalOption 表示通用选项,outputOptions 表示输出选项,vmid 表示需要监控的 JVM 进程 ID,interval 表示监控时间间隔,count 表示监控次数。

常用的 jstat 命令选项包括:

- -gc:显示 JVM 的垃圾回收堆信息;
- -class:显示 JVM 加载类的信息;
- -compiler:显示 JVM 即时编译器(JIT)的信息;
- -gcutil:显示 JVM 的垃圾回收统计信息;
- -gccapacity:显示 JVM 堆内存使用情况。

例如,以下命令可以每秒对进程 ID 1234 进行一次垃圾回收堆信息、垃圾回收统计信息和堆内存使用情况的监控:

jstat -gc -gcutil -gccapacity 1234 1s

3.4 jinfo工具

Java jinfo工具是Java 诊断命令行工具之一,它可以用于查看和调整正在运行的Java应用程序的参数。jinfo可以打印出Java应用程序进程的基本信息,如启动参数,系统属性,Java虚拟机配置等。

jinfo工具的语法如下:

jinfo [options] <pid>

其中,`<pid>`是Java进程的进程号,`options` 是可选参数,包括:

- `-flag <name>`:查看指定的JVM参数的值。
- `-flags`:查看JVM参数的当前值。
- `-sysprops`:查看Java系统属性的值。

例如,要查看进程号为12345的Java进程启动参数中的-Xmx参数值,可以使用以下命令:

jinfo -flag Xmx 12345

要查看进程号为12345的Java进程当前设置的所有参数的值,可以使用以下命令:

jinfo -flags 12345

要查看进程号为12345的Java进程的所有系统属性值,可以使用以下命令:

jinfo -sysprops 12345

3.5jstack工具

Java jstack是一个命令行工具,用于查看Java应用程序的线程堆栈信息。它可以帮助开发人员诊断应用程序中的线程问题和死锁问题。

使用jstack需要在命令行中输入以下命令:

jstack [pid]

其中pid是Java应用程序的进程ID。这将打印出应用程序中所有线程的堆栈跟踪信息。

可以使用下列命令来将jstack的输出转储到文件中:

jstack [pid] > [filename]

在生成的文件中,可以使用一个文本编辑器或其他工具来查看线程堆栈的信息。

3.6jstatd工具

Java jstatd是一个Java工具,用于在远程主机上监视Java虚拟机(JVM)的性能。它运行在一个单独的进程中,可以连接到运行在远程主机上的JVM,并收集有关该JVM的性能信息。jstatd可以在本地或远程运行,并且可以通过Java管理扩展(JMX)来配置和管理。

jstatd通常用于监视Java应用程序的性能和行为,以便进行调优和优化。它可以提供关于JVM内存使用情况、线程堆栈、垃圾收集器活动和类加载器使用情况等信息。

要使用jstatd工具,必须安装JDK(Java开发工具包)。然后,可以使用以下命令运行jstatd:

jstatd [-options] [hostid]

其中,选项包括:

- -Joption:将选项传递给Java虚拟机。
- -p port:指定jstatd进程的端口号。
- -n:指定jstatd进程应接受所有远程主机的连接。
- -r:指定jstatd进程应接受所有远程主机的SSL连接。

hostid参数指定要监视的远程主机的主机名或IP地址。如果未指定hostid,则jstatd将在本地运行,并且可以通过JMX访问本地JVM。

一旦jstatd运行起来,就可以使用jstat命令连接并查询JVM性能数据。例如,可以使用以下命令查询JVM内存使用情况:

jstat -gcutil <remote_host>:<port> <interval> <count>

其中,remote_host是jstatd进程所在的远程主机的主机名或IP地址,port是jstatd进程的端口号,interval是查询间隔时间(以毫秒为单位),count是查询次数。该命令将返回JVM的垃圾收集器使用情况,包括堆大小、已使用的堆空间和垃圾收集器的使用率等信息。

总之,Java jstatd工具是一个非常有用的工具,可用于监视和优化Java应用程序的性能。

3.7jcmd工具

jcmd是JDK 7中引入的一个命令行工具,可以用于管理Java应用程序。它可以列出正在运行的Java进程,以及这些进程所支持的与诊断和调试相关的命令。下面是一些常用的jcmd命令:

1. 列出所有正在运行的Java进程:

jcmd -l

2. 显示某个Java进程的命令列表:

jcmd <pid> help

3. 显示某个Java进程的JVM属性:

jcmd <pid> VM.system_properties

4. 查看某个Java进程的线程信息:

jcmd <pid> Thread.print

5. 查看某个Java进程的堆信息:

jcmd <pid> GC.heap_info

这些命令只是jcmd的一部分,还有很多其他命令可以使用。可以使用“jcmd -help”命令列出所有可用的命令。

 四、可视化管理工具

4.1JConsole工具


 详细

 

 4.2VM工具

详细

4.3Mission Control


五、堆文件分析


 5.1jmap命令

jmap命令是Java自带的一个工具,用于获取Java进程的内存快照(memory snapshot),可以查看Java堆中的对象信息、类信息、线程信息、GC信息等。常见的用法包括:

1. 使用jmap -heap pid 查看Java进程的内存使用情况;
2. 使用jmap -dump:format=b,file=heap.bin pid 将Java进程的堆内存dump到文件中,方便后续离线分析;
3. 使用jmap -histo pid 查看Java进程中各个类的实例数量和占用内存情况;
4. 使用jmap -permstat pid 查看Java进程中永久代(PermGen或Metaspace)的情况。

需要注意的是,jmap在获取内存快照时会触发Full GC,可能会对应用性能产生影响,因此建议仅在必要时使用jmap命令。

5.2jhat命令 (消失)

jhat是Java SE Development Kit (JDK)自带的一个命令行工具,用于生成并分析Java堆转储(Java heap dump)文件。它将堆转储文件加载到内存中,并允许用户在浏览器中查看Java堆转储文件中包含的对象、类、实例和引用的信息。

使用jhat命令可以帮助开发人员或运维人员快速诊断Java应用程序的内存问题,并定位内存泄漏或者内存溢出等问题。

例如,可以通过以下方式使用jhat命令:

1. 生成Java堆转储文件:

jmap -dump:live,format=b,file=<filename>.hprof <PID>

2. 使用jhat命令加载和解析Java堆转储文件:

jhat <filename>.hprof

3. 在浏览器中访问http://localhost:7000/,浏览Java堆转储文件中的信息。

 

 六、JMX

6.1概述

JMX(Java Management Extensions)是 Java 平台上一种管理和监控应用程序、设备、系统和网络服务的标准化方式。JMX 提供了一种标准的方式来管理 Java 应用程序,并且可以方便地集成到现有的管理工具中。

Java 应用程序可以通过使用 JMX API 暴露自己的管理接口,这些接口可以被远程客户端连接并使用。JMX API 可以访问应用程序中的 MBeans(Managed Beans),这些 MBeans 是用来表示应用程序的组件和状态的标准 Java 对象。JMX API 还提供了一种事

6.2JMX的架构 

 6.3MBean

6.4Agent


 6.5优点

七、Java程序运行安全

·Java程序来源繁杂

  1. 自定义的类
  2. 第三方Jar包
  3. 网络下载(Applet,.RMI等)

·Java程序运行

  1. 非法访问某些目录
  2. 打开Socket链接
  3. 退出虚拟机

 相关代码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156842.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023-2024-1 高级语言程序设计-函数

6-1 求m到n之和 本题要求实现一个计算m~n&#xff08;m<n&#xff09;之间所有整数的和的简单函数。 函数接口定义&#xff1a; int sum( int m, int n ); 其中m和n是用户传入的参数&#xff0c;保证有m<n。函数返回的是m~n之间所有整数的和。 裁判测试程序样例&…

excel技巧

excel技巧 &#x1f353;选中&#x1f353;填充&#x1f353;日期&#x1f352;&#x1f352; 日期快捷方式&#x1f352;&#x1f352; 日期计算&#x1f352;&#x1f352;时间相减 &#x1f353;求和&#x1f353;去除小数点&#x1f353;美化表格&#x1f352;&#x1f352…

SpringCloud(三) Ribbon负载均衡

SpringCloud(二) Eureka注册中心的使用-CSDN博客 在SpringCloud(二)中学习了如何通过Eureka实现服务的注册和发送,从而通过RestTemplate实现不同微服务之间的调用,加上LoadBalance注解之后实现负载均衡,那负载均衡的原理是什么呢? 目录 一, 负载均衡 1.1 负载均衡原理 1.2 源…

QMS质量检验管理|攻克制造企业质量检验难题,助力企业提质增效

在日益激烈的市场竞争中&#xff0c;对产品质量严格把关&#xff0c;是制造企业提高核心竞争力与品牌价值的关键因素。那如何高效、高质地完成产品质检工作&#xff1f;这就需要企业在工业质检中引进数字化技术加以辅助&#xff0c;进而推动智能制造高质量发展。 蓝库云QMS质量…

深度学习之基于YoloV5火灾烟雾报警系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、火灾烟雾报警系统四. 总结 一项目简介 YoloV5 是深度学习中用于目标检测的一种算法&#xff0c;可以对输入的图像进行识别&#xff0c;标识出…

3.15每日一题(分部积分求不定积分)

解法一&#xff1a;令lnx等于t&#xff1b;求出x与t的关系&#xff0c;带入f(lnx)的式子中&#xff1b;通过凑微分&#xff0c;分部积分等方法求出答案 注&#xff1a;在分部积分后&#xff0c;求不定积分时 &#xff08;1&#xff09;可以加项减项拆的方法求&#xff08;常规…

算法学习打卡day40|343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 力扣题目链接 题目描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1&#xff1a; 输入: n 2 输出: 1 解释: 2 1 …

基于深度学习网络的美食检测系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 % 图像大小 image_size [224 224 3]; num_classes size(VD,2)-1;% 目标类别数量…

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置&#xff0c;然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…

Docker(1)——安装Docker以及配置阿里云镜像加速

目录 一、简介 二、安装Docker 1. 访问Docker官网 2. 卸载旧版本Dokcer 3. 下载yum-utils&#xff08;yum工具包集合&#xff09; 4. 设置国内镜像仓库 5. 更新yum软件包索引 6. 安装Docker 7. 启动Docker 8. 卸载Docker 三、阿里云镜像加速 1. 访问阿里云官网 2. …

Qt 使用QtXlsx操作Excel表

1.环境搭建 QtXlsx是一个用于读写Microsoft Excel文件&#xff08;.xlsx&#xff09;的Qt库。它提供了一组简单易用的API&#xff0c;可以方便地处理电子表格数据。 Github下载&#xff1a;GitHub - dbzhang800/QtXlsxWriter: .xlsx file reader and writer for Qt5 官方文档…

云服务器 centos 部署 code-server 并配置 c/c++ 环境

将你的云服务器改为 centos 8 为什么要将云服务器的操作系统改成 centos 8 呢&#xff1f;原因就是 centos 7 里面的配置满足不了 code-server 的需求。如果你使用的是 centos 7 那么就需要你升级一些东西&#xff0c;这个过程比较麻烦。我在 centos 7 上面运行 code-server 的…