
JVM
文章平均质量分 76
wwyh520
这个作者很懒,什么都没留下…
展开
-
java执行groovy的示例
示例如下: 1) pom.xml依赖[html] view plain copydependency> groupId>org.codehaus.groovygroupId> artifactId>groovyartifactId> version>2.1.6version> dependency>原创 2017-09-30 14:34:20 · 1958 阅读 · 0 评论 -
JAVA内存模型入门
概述jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型。重要的事情说多遍。内存划分java虚拟机按照运行时内存使用区域划分如图: Paste_Image.png区域 是否线程共享 是否会内存溢出 程序计数器 否 不会 java虚拟机栈 否 会 本地方法...原创 2018-10-16 18:52:59 · 279 阅读 · 0 评论 -
JDK 10 的新特性和增强功能
JEP 286 局部变量推断: var传统的 Java 代码中,声明一个变量是非常繁琐的:List<String> list = new ArrayList<String>();现在则引入了 var,既保持 Java 对静态类型安全的承诺,又能让开发者省略不必要的局部变量类型的声明。比如像这样:var list = new ArrayList<...转载 2018-10-18 22:02:43 · 392 阅读 · 0 评论 -
JDK9新特性2
1 Java平台模块化系统该特性是Java 9 最大的一个特性,Java 9起初的代号就叫Jigsaw,最近被更改为Modularity,Modularity提供了类似于OSGI框架的功能,模块之间存在相互的依赖关系,可以导出一个公共的API,并且隐藏实现的细节,Java提供该功能的主要的动机在于,减少内存的开销,我们大家都知道,在JVM启动的时候,至少会有30~60MB的内存加载,主要原因是...转载 2018-10-18 21:59:00 · 465 阅读 · 2 评论 -
JDk9的新特性
(一):jdk和jre的改变 JDK和JRE已经在Java SE 9中进行了模块化处理。在Java SE 9之前,JDK构建系统用于生成两种类型的运行时映像 ——Java运行时环境(JRE)和Java开发工具包(JDK)。 JRE是Java SE平台的完整实现,JDK包含了JRE和开发工具和类库。 可下图显示了Java SE 9之前的JDK安装中的主目录。JDK_HOME是安装JDK的目录...转载 2018-10-18 21:53:36 · 314 阅读 · 0 评论 -
从永久代(PermGen)到元空间(Metaspace)
为什么要做这个转换?总结以下几点原因:1、字符串存在永久代中,容易出现性能问题和内存溢出。2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。4、Oracle 可能会将HotSpot 与 JRockit 合二为一。名词概念:元空间: ...原创 2018-10-18 13:31:15 · 769 阅读 · 0 评论 -
JAVA强弱软虚引用
一. 强引用、软引用、弱引用、虚引用的概念 在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。 从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让...原创 2018-10-18 11:34:46 · 293 阅读 · 0 评论 -
JVisualVM简介与内存泄漏实战
一、JVisualVM能做什么 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带(java启动时不需要特定参数,监控工具在bin/jvisualvm.exe),能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。 在JDK_H...原创 2018-06-27 21:03:32 · 477 阅读 · 0 评论 -
JVM调优命令-jstat
JVM Statistics Monitoring Tool,是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。【性能分析】命令格式1jstat [options] VMID [interval] [count]参数[options] : 操作参数,一般使用 -gcutil 查看gc情况VMID : 本地虚拟机进程ID,即当前运行的jav...原创 2018-06-27 20:58:18 · 192 阅读 · 0 评论 -
lombok的使用和原理
一、项目背景在写Java程序的时候经常会遇到如下情形: 新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter和setter方法 lombok项目的产生就是为了省去我们手动创建getter和setter方法的麻烦,它能够在我们编译源码的时候自动帮我们生成getter和setter方法。即它最终能够达到的效果是:在源码中没有getter和setter方法,但是在编...原创 2018-06-27 20:22:15 · 175 阅读 · 0 评论 -
Java的两种动态代理方式
动态代理指被代理者委托代理者完成相应的功能,是拦截器的一种实现方式,其用于拦截类或接口,内部可通过判断实现对某个方法的拦截。 jdk方式,委托类必须实现接口,代理类只能对接口进行代理。使用java的反射机制,以及Proxy和InvocationHandler来实现,代理类与委托类实现了相同的接口。 cglib,code generate library,代理类可对类进行代理,使用第三方cg...转载 2018-05-30 17:35:22 · 377 阅读 · 0 评论 -
JAVA类加载流程
Java语言系统自带有三个类加载器: - Bootstrap ClassLoader 最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。另外需要注意的是可以通过启动jvm时指定-Xbootclasspath和路径来改变Bootstrap ClassLoader的加载目录。比如java -Xbootcl...原创 2018-05-24 17:23:34 · 303 阅读 · 0 评论 -
JVM之性能优化
一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(New):年轻代用来存放J...转载 2018-05-28 15:55:09 · 255 阅读 · 0 评论 -
JVM 参数详解
-XX 参数被称为不稳定参数,之所以这么叫是因为此类参数的设置很容易引起JVM 性能上的差异,使JVM 存在极大的不稳定性。当然这是在非合理设置的前提下,如果此类参数设置合理讲大大提高JVM 的性能及稳定性。 可以说“不稳定参数”是一柄双刃剑,用的好攻无不克,用的差讲带来麻烦。如何合理利用不稳定参数一直是一个不断实践不断改善的过程,无法用统一的标准去衡量。一切都需要在系统的不断运行,...转载 2018-05-28 15:48:45 · 935 阅读 · 0 评论 -
Windows下,通过Jstack截取Java进程中的堆栈信息
在Java软件的使用过程中,有时会莫名的出现奇怪的问题。而这些问题常常无法使用日志信息定位,这时我们就需要通过查看进程内部线程的堆栈调用关系来分析问题出在哪里。 举个例子,当我们在做某个操作时,莫名的会弹出多个警告框,其中有些信息是正常的,有些则不是。对于这些错误的警告信息,我们该如何定位是哪个位置的代码出现了错误弹出的框呢? 我们就需要在弹框以后,去查看软件的各个线程,去查找究竟是哪个线程导致...原创 2018-03-23 15:05:37 · 2421 阅读 · 1 评论 -
JVM辅助工具
GC日志辅助分析工具:gceasy.io线程堆栈辅助分析工具:fastthread.io原创 2017-10-30 18:37:54 · 297 阅读 · 0 评论 -
linux jdk安装
作为Java开发人员,在Linux下安装一些开发工具是必备技能,本文以安装jdk为例,详细记录了每一步的操作命令,以供参考。0.下载jdk8登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html选择对应jdk版本下载。(可在Windows下下载完成后,通过文件夹共享原创 2017-08-23 21:37:23 · 431 阅读 · 0 评论 -
eclipse memory analyer分析thread dump和heap dump
java程序性能分析之thread dump和heap dump一.dump基本概念 在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题。这些文件记录了JVM运行期间的内存占用、线程执行等情况,这就是我们常说的dump文件。常用的有heap dump和thread dump(也叫javacore,或java d原创 2017-09-22 09:33:25 · 3548 阅读 · 0 评论 -
双亲委派模型
其实,双亲委派模型并不复杂。自定义类加载器也不难!随便从网上搜一下就能搜出一大把结果,然后copy一下就能用。但是,如果每次想自定义类加载器就必须搜一遍别人的文章,然后复制,这样显然不行。可是自定义类加载器又不经常用,时间久了容易忘记。相信你经常会记不太清loadClass、findClass、defineClass这些函数我到底应该重写哪一个?它们主要是做什么的?本文大致分析了各个函数的流程,目...原创 2018-10-17 10:36:50 · 430 阅读 · 0 评论