
jvm
djp567
从事javaweb开发近4年,精通java
展开
-
jvm四:jvm内存说明
前言:这是一篇关于JVM内存区域的文章,从网搜索大量的东西,所以会有些类同的地方,也不能保证我自己写的比其他网上的和书本上的要好, 仅仅是自己的理解和总结,所以有写错的地方希望大家多多指教。原理 JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是J转载 2017-11-28 14:33:25 · 292 阅读 · 0 评论 -
JVM三(2):jmap、jstack、jstat 等jvm分析工具
1. jstat 这个命令对于查看Jvm的堆栈信息很有用。能够查看eden,survivor,old,perm等heap的capacity,utility信息 对于查看系统是不是有能存泄漏以及参数设置是否合理有不错的意义2. jstack 这个是用来查看jvm当前的thread dump的。可以看到当前Jvm里面的线程状况。 这个对转载 2017-11-28 14:06:09 · 337 阅读 · 0 评论 -
JVM三(2):jstat使用方法
定义:Jstat是JDK自带的一个轻量级工具,主要用JVM内建的指令对java应用程序的资源和性能进行实时的监控。 格式:jstat [-t] [-h] 参数解释:option 可以从下面参数中选择-class 显示ClassLoad的相关信息;-compiler 显示JIT编译的相关信息;-原创 2017-11-24 11:27:51 · 326 阅读 · 0 评论 -
JVM-zero:是否需要进行GC调优
是否需要进行GC调优(从其他地方copy的感觉挺有道理的,copy一下)决定是否进行Java GC调优,前提是主要看新生代的Minor GC和老年代的FULL GC 的GC频率和每次GC停顿的时间对于业务来说是否可接受,一般满足以下条件,可不用考虑GC调优(仅参考,具体还要看业务)1 MinorGC执行的很快(小于50ms)2 MinorGC执行的并不频繁(大概转载 2017-11-28 14:03:58 · 781 阅读 · 0 评论 -
JVM六:查找最最耗cpu的线程或线程时间最长并定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。第一步先找出Java进程ID,服务器上的Java应用名称为mrf-center:root@ubuntu:/# ps -ef | grep m转载 2017-11-28 12:50:29 · 2334 阅读 · 0 评论 -
JVM系列一:2)JVM内存组成
java内存组成介绍:堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员转载 2017-11-27 22:28:42 · 200 阅读 · 0 评论 -
JVM五:Gc
jvm虚拟机管理的内存主要有:程序计数器,堆,方法区(永久代),虚拟机栈,本地方法栈。堆是jvm管理的最大的一块内存,主要的作用:存放几乎所有的类的实例对象。首先,jvm对内存分为新生代(Young)和老年代(Old).新生代又可以划分为三块,这样jvm中就有新生代,老年代,永久代几片内存,这样分区的目的就是垃圾回收时使用分代算法。新生代被划分为三个区域:1、Eden:几乎所有新诞生的java转载 2017-11-26 22:37:07 · 234 阅读 · 0 评论 -
JVM二:JVM7、8详解
1. JVM堆内存划分一图读懂JVM架构解析1.1 JDK7及以前的版本其中最上一层是Nursery内存,一个对象被创建以后首先被放到Nursery中的Eden内 存中,如果存活期超两个Survivor之后就会被转移到长时内存中(Old Generation)中。永久内存中存放着对象的方法、变量等元数据信息。通过如果永久内存不够,就会得到如下错误:Jav转载 2017-11-24 09:52:08 · 1159 阅读 · 0 评论 -
JVM八:JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -Xms355转载 2017-12-05 10:28:05 · 256 阅读 · 0 评论 -
JVM七:jvm参数设置说明
参数说明-Xmx3550m:设置JVM最大堆内存为3550M。-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。-Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系原创 2017-11-28 14:53:30 · 350 阅读 · 0 评论 -
JVM一:Java虚拟机
前言:这是一篇关于JVM内存区域的文章,从网搜索大量的东西,所以会有些类同的地方,也不能保证我自己写的比其他网上的和书本上的要好, 仅仅是自己的理解和总结,所以有写错的地方希望大家多多指教。大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),Heap(堆),Program Counter Register(程序计数器), VM Stack(虚拟机栈,也有转载 2017-11-23 20:25:22 · 767 阅读 · 0 评论 -
jvisualvm插架安装
jdk自带jvisualvm可以对java应用进行监控。其中有个插件visualgc可以查看jvm垃圾回收的具体信息。安装插件的步骤是打开jvisualvm,点击工具->插件,在可用插件列表找到Visual GC进行安装,结果提示无法安装。在浏览器打开链接访问一下,发现java.net网站已经被Oracle关闭了。正在抓狂间,偶然发现visualvm已经迁移到了github上,地址是https:/转载 2017-11-29 10:23:09 · 309 阅读 · 0 评论 -
Visual GC插件「不受此JVM支持」问题
利用visual vm监控服务器上的java虚拟机, 在默认情况下, 是没有办法使用 visual vm的插件visual gc的。 安装插件后打开visual gc的页签, 会显示「不受此JVM支持」如下图要解决这个问题需要Java自带的Jstatd服务, 使用步骤如下第一, 在服务器上的java安装的bin下(如/usr/local/ja原创 2017-11-29 10:13:57 · 8661 阅读 · 1 评论 -
Java中的强引用,软引用,弱引用,虚引用(Java 如何有效地避免OOM:善于利用软引用和弱引用)
Object object = new Object();String s 想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。 一. 强引用、软引用、弱引用、虚引用的概念1.强引用(StrongReference) 强引用就是指在程转载 2017-12-08 08:46:34 · 267 阅读 · 0 评论