java入坑之运行管理

news2024/11/26 1:51:58

一、概述

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.coloradmin.cn/o/1161176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全新二开游戏支付通道/话费/电网、紫水晶带云端源码

源码修复可用&#xff0c;YY业务都可用 本店所售程序只供测试研究&#xff0c;不得使用于非法用途&#xff0c;不得违反国家法律&#xff0c;不得用于进行违法行为&#xff0c;否则后果自负&#xff01;购买以后用作他用附带的一切法律责任后果都由购买者承担于本店无任何关…

Linux开机、重启、关机和用户登录注销

1.【关机】 shutdown shutdown now 表示立即关机 shutdown -h now 表示立即关机 shutdown -h 1 表示1分钟后关机 halt 用来关闭正在运行的Linux操作系统 2.【重启】 shutdown -r now 表示立即重启 reboot 重启系统 sync …

蜜罐系统HFish的部署与功能实测

1. 引入 根据参考1对蜜罐的定义&#xff1a; 蜜罐&#xff08;Honeypot&#xff09;是一个计算机科学领域的术语&#xff0c;指用于检测或防御未经授权的行为或黑客攻击的陷阱。其名称来源于其工作原理类似于用来诱捕昆虫的蜜罐。蜜罐通常伪装成看似有利用价值的网路、资料、…

JVM修炼印记之初识

文章目录 JVM认识JVM的功能常见JVMHotSpot的发展历程 JVM认识 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;JVM&#xff09;是一个用于执行Java字节码的虚拟计算机。它是Java语言的核心&#xff0c;可以在不同的操作系统和硬件平台上运行Java程序。 JVM负责将Java…

[架构之路-252/创业之路-83]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业应用信息系统集成

目录 第一章 什么是企业应用信息系统集成What 1.1 简介 1.2 架构 二、为什么需要企业应用信息系统集成Why 三、如何实现企业应用信息系统集成 3.1 步骤 3.2 企业应用集成的层次 3.3 业务流程重组 第一章 什么是企业应用信息系统集成What 1.1 简介 企业应用信息系统集…

力扣刷题 day62:11-1

1.反转字符串中的元音字母 给你一个字符串 s &#xff0c;仅反转字符串中的所有元音字母&#xff0c;并返回结果字符串。 元音字母包括 a、e、i、o、u&#xff0c;且可能以大小写两种形式出现不止一次。 方法一&#xff1a;双指针 #方法一&#xff1a;双指针 def reverseV…

国际多语言出海商城源码/返佣产品自动匹配拼单商城源码

源码介绍&#xff1a; 国际多语言出海商城返佣产品自动匹配订单拼单商城源码&#xff0c;8国多语言出海拼单商城。此网站是很多巴西客户定制的原型&#xff0c;已投放运营符合当地本地化。 多语言商城返利返佣投资理财派单自带余额宝&#xff0c;采取全新支付端口&#xff0c…

Mac电脑怎么运行 Office 办公软件

虽然 Office 软件也有 Mac 版本的&#xff0c;但是有蛮多小伙伴用起来还是感觉不得劲&#xff0c;毕竟接触了太久的 Windows&#xff0c;所以想要使用 Windows 版本的 Office 软件。 今天就给大家介绍一下怎么在 Mac 电脑中运行 Windows 版本的办公软件&#xff0c;在这里就需…

回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测

回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测 目录 回归预测 | Matlab实现WOA-CNN-SVM鲸鱼算法优化卷积神经网络-支持向量机的多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.WOA-CNN-SVM鲸鱼算法…

解决VSCode使用SSH远程连接时无法指定用户名的问题

Windows 11自带OpenSSH客户端&#xff0c;和VSCode配合得很好&#xff0c;没有这个问题。 今天要说的是旧版本Windows 7/8/10系统遇到的问题。 PS: Windows 7可以运行的最后版本是VSCode 1.80.2 由于Windows 7/8/10没有自带的OpenSSH客户端&#xff0c;但可以调用MSYS环境下的…

Ubuntu 使用 nginx 搭建 https 文件服务器

Ubuntu 使用 nginx 搭建 https 文件服务器 搭建步骤安装 nginx生成证书修改 config重启 nginx 搭建步骤 安装 nginx生成证书修改 config重启 nginx 安装 nginx apt 安装&#xff1a; sudo apt-get install nginx生成证书 使用 openssl 生成证书&#xff1a; 到对应的路径…

【已解决】PPT不能转换成PDF文档怎么办?

PPT可以转换成PDF文档&#xff0c;只需要点击PPT菜单页面中的【文件】选项&#xff0c;再点击【导出】即可转换&#xff0c;如果转换时发现【导出】选项不可选&#xff0c;无法完成转换怎么办&#xff1f;以下3种方法可以试试&#xff01; 出现上面这种情况&#xff0c;我们可以…

<windows>win11输入法无法设置UI,变为了win10样子,解决方法

1 问题 升级win11版本后&#xff0c;输入法可能会变为旧版&#xff0c;如下图。如何恢复WIN11新版样子&#xff1f; 2 解决 点击开始–>设置–>搜索”语言“–>选择中文简体右侧语言选项。 下拉到最后选择微软拼音右侧三点&#xff0c;选择键盘选项–>选择常规…

硬件调试-电源纹波测量

硬件调试-电源纹波测量 Fang XS.1452512966qq.com如果有错误&#xff0c;希望被指出&#xff0c;学习技术的路难免会磕磕绊绊量的积累引起质的变化感谢酸奶大佬提供的硬件技术指导&#xff1b; 电源纹波 百度百科定义如下&#xff1a; 纹波是由于直流稳定电源的电压波动而造…

第五章 I/O管理 十三、固态硬盘SSD

目录 一、原理 二、组成 1、闪存翻译层&#xff1a; 2、存储介质&#xff1a; 三、读写性能特性 四、与机械硬盘相比的特点 五、磨损均衡技术 1、思想: 2、动态磨损均衡&#xff1a; 3、静态磨损均衡&#xff1a; 六、SSD的理想寿命 一、原理 基于闪存技术Flash Me…

windows docker desktop 更换镜像 加速

最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度&#xff0c;但有一个问题&#xff0c;部分站点镜像不全或者镜像比较老&#xff0c;建议使用多个镜像站。 https…

PyGame:Python 游戏编程入门

一、说明 当我在上个世纪末开始学习计算机编程时&#xff0c;我的愿望是编写计算机游戏。我试图弄清楚如何在我学到的每种语言和每个平台上编写游戏&#xff0c;包括 Python。这就是我发现pygame并学习如何使用它来编写游戏和其他图形程序的方式。当时&#xff0c;我真的很想要…

计算机网络 第六章应用层

文章目录 1 应用层功能概述2 网络应用模型&#xff1a;客户服务器(CS)3 网络应用模型&#xff1a;PeerToPeer(P2P)4 域名和域名系统5 常见域名解析服务器6 两种域名解析过程7 什么是FTP8 FTP的工作原理9 EMail的组成10 EMail系统的组成结构11 发邮件协议&#xff1a;SMTP12 多用…

Windows10安装Anaconda与Pytorch的记录

这是一篇关于安装Anaconda和Pytorch的记录与复盘&#xff0c;写的原因是我电脑恢复系统之后东西全没了&#xff0c;再装Pytorch的时候一脸懵逼忘了怎么弄了&#xff0c;写篇记录以备我下一次安装。 1、Anaconda的安装 1.1、Anaconda安装包下载 下载链接: Free Download | An…