java 运行管理-基础

  • OS层管理
  • JVM层管理
  • java 安全策略

JVM将.class文件加载到JVM Memory中,然后JVM里的执行机获取内存里的内容 — 获取字节码指令,并将其翻译为本地方法。然后执行。

java运行逻辑架构可以抽象为:
多个class文件在JVM上运行 -> 多个JVM在操作系统上运行。
因此java程序可以分为OS管理和JVM管理。

OS层管理

  • 进程级别的管理(黑盒),不知具体程序内部情况。
  • 管理CPU/内存/IO等具体的性能监控。

Linux平台上:

  1. top命令,查看系统中最占资源的那部分。
  2. vmstat命令,查看系统整体的CPU、内存、IO、Swap等信息。
  3. iostat命令,查看系统详细的IO信息。
    各个命令后面跟相应的参数,可以满足不同要求的查询。

Windows平台上的任务管理器和在cmd中输入perfmon启动性能监视器,跟踪进程。

JVM层管理

1. JDK管理工具

程序运行管理工具,中各个工具命令的具体使用使用时在查看即可。

2. 可视化管理工具

  • JConsole
  • Visual VM
  • Mission Control
    这些工具都在java/…/Contents/Home/bin/目录下。其中 Mission Control通过该目录下的jmc启动。
    可对java本地进程和远程进程进行监管。

3. 堆文件分析

  • jmap为JDK自带的命令,可以统计堆内的对象实例数据。
jmap -histo 12054 > /Users/kyan/Desktop/jmap.txt
将进程号为12054的java进程,以直方图的形式输出保存到桌面上。

还可以先使用jmap生成dump文件:文件后缀为.hprof。用Visual VM进行装入分析堆文件。

jmap -dump:format=b,file=/Users/kyan/Desktop/jmap.hprof 12054
可以生成堆内存dump文件。
  1. JMX:Java Management eXtensions
  • JMX是一个应用程序植入管理的框架。
  • 用户可以在任何java应用程序中使用这些代理和服务实现管理。
  • JMX架构:

1). Instrumentation Level(Mbean):
MBean:代表一个被管理的对象,对外暴露一个接口,即一些可以读写的属性,可操作的方法。
1-1. standerd MBean:最普通的MBean,定义一个接口和其实现类。
1-2. dynamic MBean
1-3. open MBean
1-4. model MBean
2). Agent Level(MBeanServer):
Agent:
一个MBean容器,代表一群被管理的对象,外界通过Agent可以访问到MBean。
Agent核心为MBeanServer,MBean在MBeanServer上注册。
3). Remote Management Level。


简单例子

  1. standerd MBean:
    接口:
public interface helloMBean{public void say();public String getName();public String getCacheSize();public void setCacheSize(int a);public int add(int a, int b);
}

实现类:

public hello implements helloMBean{private static final int DEFUALT = 200;private int CacheSize = DEFAULT;private Sting name = "register";public void say(){System.out.println("hello world");}public String getName(){return name;}public String getCacheSize(){return CacheSize;}public void setCacheSize(int a){this.CacheSize = a;System.out.println("CacheSize is " + CacheSize);}public int add(int a, int b){return a+b;}
}
  1. (Agent)MBeanServer:
public class test{public static void mian(String[] args){//获取平台默认的MBeanServer。MBeanServer mbs = ManagementFactory.getPlatFormMBeanServer();//定义对象名字。ObjectName name = new ObjectName("type=hello");//创建对象。hello mbean = new hello();//将对象注册到MBeanServer中。mbs.registerMBean(mbean, name);}
}

运行该程序后,使用JConsole进调用。

java 安全策略

由于java字节码文件来源广泛,使用时存在安全隐患,因此java提供安全管理器来对程序进行安全判定。默认情况下,普通程序不加载安全策略文件。

  • 启动安全管理器的两种方法
  1. 在程序代码中添加:
System.setSecurityManager(new SecurityManager());
  1. 在程序运行时,添加启动参数:
java - Djava.security.nanager - Djava.security.policy=Mypolicy HelloWorld
  • 安全策略文件:
  1. 建立代码来源和访问权限的关系。
  2. 代码来源:代码位置,证书集。
  3. 权限:由安全管理器负责加载安全属性。
    在策略文件中配置对tmp目录下文件的读写策略。
permission java.io.FilePermission "/tmp/*", "read,write"

在文件中定义:
FilePermission p = new FilePermission("/tmp/*", “read, write”);

        System.setProperty("java.security.policy","paths/mypolicy.policy");System.setSecurityManager(new SecurityManager());File f = new File("paths/tmp/1.txt");if(f.exists()){f.delete();//FilePermission p = new FilePermission("/tmp/*", "read, write");//安全策略文件中定义了不可以删除,所以删除失败。}

java 运行管理-基础相关推荐

  1. java 必备_Java基础必备

    标签: 写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希 ...

  2. Java培训零基础学员必须要知道的知识点

    学习java那么遇到的知识点有很多,很多同学都会问到一些关于java的编程知识点,下面小编就为大家整理一下java培训零基础学员必须要知道的6个知识点. Java培训零基础学员必须要知道的6个知识点: ...

  3. Java修炼 之 基础篇(二)Java语言构成

    上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成. 所谓的Java构成,主要是指Java运行环境的组成,从外围到核心依 ...

  4. java基础(一):谈谈java内存管理与垃圾回收机制

    看了很多java内存管理的文章或者博客,写的要么笼统,要么划分的不正确,且很多文章都千篇一律.例如部分地方将jvm笼统的分为堆.栈.程序计数器,这么分太过于笼统,无法清晰的阐述java的内存管理模型: ...

  5. JVM运行时结构、Java内存管理、JVM实例、HotSpot VM对象的创建、内存布局和访问定位

    1.JVM运行时结构 Java 运行时数据区域有程序计数器.Java虚拟机栈.本地方法栈.Java堆和方法区.其中前三个线程私有,随线程生而生,线程灭而灭:后面两个是线程间共享. 1.1 程序计数器 ...

  6. Java内存管理:Java内存区域 JVM运行时数据区

    Java内存管理:Java内存区域 JVM运行时数据区 在前面的一些文章了解到javac编译的大体过程.Class文件结构.以及JVM字节码指令. 下面我们详细了解Java内存区域:先说明JVM规范定 ...

  7. cmd运行java文件_Java基础 前传

    微信搜一搜秃然编程 一.关于MS-DOS MS-DOS(微软磁盘操作系统),是美国微软公司提供的磁盘操作系统.在美国微软公司推出Windows1.0.Windows3.0.1995年8月24日推出的操 ...

  8. java与c内存管理_Java基础--Java内存管理与垃圾回收

    Java自动内存管理 在讲解内存管理之前,首先需要了解对象和对象引用的区别 对象是类的一个实例,以人这个类为例,Person是我们定义的一个类 public class Person{} public ...

  9. java字节码运行原理_JVM 内部原理(六)— Java 字节码基础之一

    JVM 内部原理(六)- Java 字节码基础之一 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...

最新文章

  1. tcp socket 异常关闭总结
  2. Node初学(二)Promise/Deferred模式,异步调用
  3. C语言 获取数组的元素个数
  4. linux ubuntu ssh,Linux(Ubuntu)安装ssh服务
  5. 事件查看器 无法完成应用程序上的操作,接口未知
  6. macOS 使用手册
  7. R Studio更换外部包镜像的方法
  8. java vector实现的接口_java的List接口的实现类 ArrayList,LinkedList,Vector 的区别
  9. 计算机毕业设计中用js+html+java实现文件预览
  10. 二分图 洛谷P2055 [ZJOI2009]假期的宿舍
  11. anywhere随启随用的静态文件服务器
  12. 中文版232测试软件,打印机、客显测试软件
  13. 比特率与波特率有何差别?—Vecloud
  14. ipad上的游戏服务器无响应,教你 game center无法连接服务器解决办法及iOS9.3.2公测版已修复GameCenter无响应bug...
  15. 【修真院JAVA小课堂】redis缓存集群简单介绍
  16. 学会php又忘了,要学会忘记的说说,学会忘记一个人的说说
  17. 完全使用gnu/linux工作
  18. linux内核基本模型,Linux设备模型(1)_基本概念
  19. 搜狗推送接口之搜狗收录怎么做?
  20. wsl Failed to get D-Bus connection: Operation not permitted

热门文章

  1. http请求requestUtils
  2. 微信小程序页面引入公用头部底部
  3. 微信小程序之换肤的功能
  4. Swift 全功能的绘图板开发
  5. Careercup - Microsoft面试题 - 5672369481842688
  6. Oracle Assets Additions API--Sample Script(Invoices)
  7. Ubuntu20.04 命令行 修改IP地址
  8. SpringMVC-动力节点-王鹤
  9. oracle复合字段,复合索引 选择频繁的字段,还是选择选择性低的字段 放在前面?...
  10. Oracle列直方图的问题隐患