linux 环境下,top -d 2 -H -p pid
查看应用,发现VIRT RES过高
分析原因:linux使用了glibc, glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.
glibc 在版本 2.10 引入的 arena 新功能导致。CentOS 6/7 的 glibc 大都是 2.12/ 2.17 了,所以都会有这个问题。这个功能对每个线程都分配一个分配一个本地arena来加速多线程的执行。
在 glibc 的 arena.c 中使用的 mmap() 调用就和之前的示例代码类似:
p2 = (char *)mmap(aligned_heap_area, HEAP_MAX_SIZE, PROT_NONE,
MAP_NORESERVE | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)
之后,只有很小的一部分地址被映射到了物理内存中:
mprotect(p2, size, PROT_READ | PROT_WRITE)
因此在一个多线程程序中,会有相当多的 64MB 的 arena 被分配。
java应用基本都是多线程,而且线程资源的回收也不是那么的及时,所有会有虚拟内存过高的现象
相关推荐
在IT领域,特别是对于系统监控和资源管理而言,掌握如何使用Java获取Linux系统的CPU和内存实时信息是一项重要的技能。这不仅有助于系统管理员实时监控服务器的健康状况,还为开发人员提供了优化应用程序性能的关键...
与实模式相比,保护模式利用页目录表和页表实现了虚拟内存的概念,允许操作系统和应用程序使用独立的地址空间,提高了系统的稳定性和安全性。然而,这也意味着操作系统必须面对如何在保护模式下有效地管理物理内存的...
此外,Java应用也可以使用管理程序API,如KVM或Xen的API,来管理和控制虚拟机的块设备,其中包括虚拟内存块设备。 4. **VirtualDisk.c** 文件名`VirtualDisk.c`暗示这是一个C语言编写的源代码文件,可能包含了实现...
在电脑上安装微软的Java浏览插件,可以支持Java应用程序的运行,从而实现这种沉浸式的体验。 首先,让我们理解一下Java编程在VR中的应用。Java是一种跨平台、面向对象的编程语言,它的可移植性和强大的库支持使得它...
在开发Java应用程序时,通常使用Java编译器将Java源代码(.java)文件编译为字节代码(.class)文件,然后将字节代码加载到目标机,通过目标机上的Java虚拟机(JVM)解释执行。 二、开发环境安装与配置 在Linux下...
- jprofiler:一个用于监控和分析Java应用程序性能的工具,提供CPU和内存使用情况的详细信息。 - jstat:用于监视垃圾回收情况以及堆内存使用情况。 10. JVM参数: - -Xnoclassgc:禁用类的垃圾回收,通常用于类...
1. **实时监控**:持续监测Linux集群中每个节点的物理内存、虚拟内存(包括交换空间)以及内存使用率,帮助管理员及时发现潜在的内存瓶颈。 2. **统计分析**:收集内存使用数据并进行统计分析,包括平均使用量、...
要使用Jconsole对Java应用程序进行监控,需要在Linux机器上安装JDK,并配置JDK的环境变量。此外,还需要在本地安装图形化连接工具,如Xmanager。 操作步骤 1. 本地启动Xmanager中的Xmanager - Passive工具,启动后...
在Linux环境中部署JAVA项目是一项涉及多个步骤和技术组件的活动,本篇文档将详细介绍如何在Linux操作系统上成功部署JAVA项目,同时涉及到JDK、TOMCAT以及ORACLE数据库的相关配置。 首先,需要了解什么是Linux,...
在Linux服务器下安装和配置常用的应用环境是...以上步骤详细地介绍了如何在Linux环境下完成JDK、MySQL、Ant等常用开发和运行环境的安装与配置,对于进行Java应用部署和开发的工程师来说,这些步骤是基础且必不可少的。
### Linux安装及Java环境搭建详解 #### 一、安装虚拟机与Linux系统 在开始之前,我们首先需要准备以下工具: - **虚拟机软件**:推荐使用 VMware。 - **Linux系统镜像文件**:例如 CentOS-6.5-x86_64-bin-DVD1....
6. **安装Tomcat**:Tomcat是一个常用的Java应用服务器,对于运行GIS应用来说是必需的。同样通过包管理器安装,如`sudo apt-get install tomcat8`。 7. **配置GIS软件**:根据具体GIS软件的安装文档,进行必要的...
使用GCJ编译的Java程序比在Java虚拟机上运行的Java字节码速度要快得多,并且使用更少的内存。 此外,使用Linux中的GNU调试工具gdb调试Java程序也非常简单。为了实现Java程序的编译和调试,需要安装和配置相应的工具...
3. 内存管理:Linux采用分页内存管理系统,将物理内存划分为固定大小的页,通过虚拟地址映射到物理地址。此外,还支持交换空间,当物理内存不足时,将部分不活跃的页面写入磁盘。 4. 文件系统:Linux支持多种文件...
- **管理交换分区**:通过管理交换分区来实现虚拟内存技术,当物理内存不足时,可以通过将部分不活跃的数据移动到硬盘上的交换分区来释放物理内存空间。 - **管理后台进程和文件系统**:内核还负责管理后台运行的...
Android应用程序主要由Java编写,运行在Dalvik虚拟机上,但为了实现与硬件设备的直接交互,如访问传感器、控制硬件设备等,就需要通过JNI(Java Native Interface)进入C/C++层,进一步调用Linux内核的驱动程序。...
《Linux 内存管理内幕》深入剖析了Linux环境下内存管理的核心技术及其应用场景,旨在帮助程序员更好地理解和利用内存资源。 #### C语言中的内存管理 在C语言中,内存管理是一项基本且重要的技能。通过本文,我们将...
操作系统是计算机系统的核心,面试中可能涉及进程与线程的区别、内存管理(如虚拟内存、页交换)、调度算法(如FCFS、SJF、优先级调度)、文件系统(如EXT3、EXT4、NTFS)以及I/O操作等知识点。 网络方面,TCP/IP...
在大数据开发领域,Linux操作系统是首选的开发环境,因为其稳定性、开源特性和对高性能计算的支持。本教程将详述如何在虚拟机软件VMware上搭建一个基于CentOS的Linux环境,以及安装JDK 1.8,为大数据开发提供基础。 ...
- **Resin**,一个高性能的Java应用服务器,适用于处理高并发的Web应用。 3. **目录结构** 遵循Linux标准文件系统布局(FHS),确保各软件安装在正确的位置,便于管理和维护。 4. **安装步骤** - **Oracle** ...