转:java.lang.management 通过JMX监控,管理JVM运行

本文通过两个示例程序深入探讨了Java中JVM如何管理内存。首先介绍了堆(Heap)和非堆(Non-Heap)内存的区别,并展示了如何使用java.lang.management包中的工具类来监控JVM内存使用情况。此外,还提供了查看操作系统信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过java.lang.management 你可以看看JVM是怎么处理内存的。JVM处理内存分为两部分:
Heap堆,加载类和对象的,这个就是垃圾回收器作用的地方。Non-Heap,有些Garbage Collector也作用于此。
看下边这个例子:

import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;

public class ShowMemory {
    static String x;
    public static void main(String arg[]) {
        ShowMemory sm = new ShowMemory();
        sm.show();
        x = "";
        for(int i=0; i<1000; i++)
            x += " string number " + i;
        sm.show();
        x = null;
        sm.show();
        MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
        mem.gc();
        sm.show();
    }
    void show() {
        MemoryMXBean mem = ManagementFactory.getMemoryMXBean();
        MemoryUsage heap = mem.getHeapMemoryUsage();
        System.out.println("Heap committed=" + heap.getCommitted() +
                            " init=" + heap.getInit() +
                            " max=" + heap.getMax() +
                            " used=" + heap.getUsed());
    }
}

 

 

import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;

public class ShowSystem {
    public static void main(String arg[]) {
        OperatingSystemMXBean op = ManagementFactory.getOperatingSystemMXBean();
        System.out.println("Architecture: " + op.getArch());
        System.out.println("Processors: " + op.getAvailableProcessors());
        System.out.println("System name: " + op.getName());
        System.out.println("System version: " + op.getVersion());
        System.out.println("Last minute load: " + op.getSystemLoadAverage());
    }
}
 
资源下载链接为: https://pan.quark.cn/s/5c50e6120579 在Android移动应用开发中,定位功能扮演着极为关键的角色,尤其是在提供导航、本地搜索等服务时,它能够帮助应用获取用户的位置信息。以“baiduGPS.rar”为例,这是一个基于百度地图API实现定位功能的示例项目,旨在展示如何在Android应用中集成百度地图的GPS定位服务。以下是对该技术的详细阐述。 百度地图API简介 百度地图API是由百度提供的一系列开放接口,开发者可以利用这些接口将百度地图的功能集成到自己的应用中,涵盖地图展示、定位、路径规划等多个方面。借助它,开发者能够开发出满足不同业务需求的定制化地图应用。 Android定位方式 Android系统支持多种定位方式,包括GPS(全球定位系统)和网络定位(通过Wi-Fi及移动网络)。开发者可以根据应用的具体需求选择合适的定位方法。在本示例中,主要采用GPS实现高精度定位。 权限声明 在Android应用中使用定位功能前,必须在Manifest.xml文件中声明相关权限。例如,添加<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />,以获取用户的精确位置信息。 百度地图SDK初始化 集成百度地图API时,需要在应用启动时初始化地图SDK。通常在Application类或Activity的onCreate()方法中调用BMapManager.init(),并设置回调监听器以处理初始化结果。 MapView的创建 在布局文件中添加MapView组件,它是地图显示的基础。通过设置其属性(如mapType、zoomLevel等),可以控制地图的显示效果。 定位服务的管理 使用百度地图API的LocationClient类来管理定位服务
### Java RocketMQ 发送消息时 ALPN 协议协商失败解决方案 当Java应用程序尝试通过RocketMQ发送消息并遇到`ExecutionException: StatusRuntimeException: UNAVAILABLE: io exception`错误以及ALPN协议协商失败问题时,这通常涉及到多个方面的原因。 #### 1. Nacos服务注册发现配置不当 Nacos作为微服务体系中的重要组件,在版本升级至2.0之后引入了新的端口需求(即除了默认的服务端口8848外还需要开放9848和9849用于gRPC通信),如果这些端口未被正确打开,则可能导致客户端无法正常访问Nacos集群从而间接影响到依赖于它的其他中间件如RocketMQ的工作状态[^5]。 为了确保Nacos能够顺利工作,建议确认防火墙设置已经允许上述提到的新端口,并且在应用层面上无需特别针对这两个新端口做额外的应用程序属性文件(`application.properties`)内的特殊配置。除非有特定的需求或者环境差异才考虑进一步调整[^4]。 #### 2. JVM参数缺失或不兼容 对于涉及TLS/SSL的安全连接场景下发生的ALPN握手失败情况,往往是因为JVM启动参数中缺少必要的选项来支持此功能。具体来说,应该保证使用的OpenJDK/JRE版本至少为1.8u261以上,并且包含了对HTTP/2的支持;同时需添加如下所示的相关JVM参数: ```bash -Djdk.tls.client.protocols=TLSv1.2 \ -Djava.security.properties=/path/to/java.security \ --add-modules=java.se --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED \ --add-opens=java.base/java.lang=ALL-UNNAMED \ --add-opens=java.base/java.nio=ALL-UNNAMED \ --add-opens=java.base/sun.nio.ch=ALL-UNNAMMED \ --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED \ --add-opens=javafx.graphics/com.sun.javafx.tk=ALL-UNNAMED \ -Djavax.net.ssl.trustStoreType=JKS \ -Djavax.net.debug=ssl,handshake,failure ``` 其中最重要的是确保启用了TLS v1.2及以上版本,并指定了信任库类型为JKS以便能正确处理证书验证过程[^1]。 另外值得注意的是,某些情况下即使设置了正确的JVM参数仍然会遭遇ALPN加载顺序的问题,这时可以尝试安装官方提供的[JCE Unlimited Strength Jurisdiction Policy Files](https://www.oracle.com/java/technologies/javase-jce-all-downloads.html),以解除加密算法强度上的限制。 #### 3. 应用间网络连通性不佳 考虑到RocketMQ本身是一个分布式的消息队列系统,其内部节点之间的通讯质量同样至关重要。任何一处链路不稳定都可能引发整体性能下降甚至完全不可用的情况发生。因此有必要检查从生产者机器出发能否无障碍地到达Broker及其他相关资源的位置,包括但不限于DNS解析准确性、路由可达性和延迟状况等方面[^2]。 此外还需关注是否存在第三方安全设备(比如WAF/Web Application Firewall)阻止了合法的数据交换活动的可能性,因为这类装置有时会对基于HTTPS/TLS的流量实施更为严格的审查机制而造成不必要的阻碍[^3]。 综上所述,要彻底解决这个问题需要综合考量多方面的因素,并逐一排查直至找到根本原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值