Java堆外内存

什么是堆外内存Java对象分配的内存包括堆内存和堆外内存。堆外内存即计算机内存中除JVM堆内存之外的内存,例如一台32位的Windows服务器内存时2GB,其中1.6GB分配给了Java堆,那么剩余的0.4GB就是堆外内存。堆外内存的垃圾回收堆外内存的垃圾回收需要主要注意的一点是,堆外内存并不是JVM管辖的范围,堆外内存不足时并不会通知GC进行垃圾回收,只有等到JVM进行Full GC时才会顺带清…

more >>

substring()内存泄露隐患

我们知道对于一个字符串,我们可以调用其 substring(int beginIndex, int endIndex)方法返回一个下标从beginIndex到endIndex-1的子字符串。JDK6的substring方法与JDK7的是不同的版本,JDK6的substring方法可能带来内存泄露问题。内存泄露是指Java堆中某些对象已经不被程序所使用,但仍然存在指向这些对象的引用,即存…

more >>

JDK监控和故障处理工具 (I)

JDK提供的命令行工具大多是jdk/lib/tools.jar类库的一层简单的封装, 其中包括了一些在运行时监控虚拟机数据、定位程序故障、优化程序性能的工具。Sun JDK提供的监控和故障处理工具常用的有:jps (JVM Process Status)虚拟机进程状态工具。显示当前系统中正在运行的虚拟机进程状态信息,包括虚拟机进程的本地虚拟机ID(LVMID),以及虚拟机执行的主类jstat (J…

more >>

JVM实用参数系列

本文首发于CodeCentric博客的Useful JVM Flags系列,经原作者Sven Ruppert授权由并发编程网翻译并分享。JVM是Java Virtual Machine(Java虚拟机)的缩写,Java通过使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java具备了一次编写,多处运行的特性。JVM一直是Java学习中的重点,也是难点。并发编程网组织翻译了JVM实用参数系列文章,…

more >>

JVM内存区域与对象探秘

JVM运行时数据区Java虚拟机具有自动内存管理机制,对于Java程序猿来说,可以省去很多内存管理的工作量,Java程序也不容易出现内存泄漏和内存溢出的问题。然而,一旦出现内存泄漏或溢出等问题,如果不了解虚拟机是怎样使用内存,分析和排查错误将成为一项非常艰难的工作。Java虚拟机在程序运行过程中会将管理的内存划分为若干个不同的区域,Java虚拟机所管理的内存包括以下几个运行时数据区:1. 程序计数…

more >>