
JVM
russle
Java开发工程师
**注意事项**:本博客所有代码是为了介绍相关内容而编写或者引用的,示例代码并非可直接用于生产的代码。仅供参看而已。
展开
-
OOM之GC Overhead limit exceeded
Java8常见的OOM主要有三种,分别是Exception in thread thread_name: java.lang.OutOfMemoryError: Java heap space、Exception in thread thread_name: java.lang.OutOfMemoryError: GC Overhead limit exceeded 以及Exception in ...原创 2019-12-08 19:38:20 · 3286 阅读 · 0 评论 -
System.gc()与Runtime.getRuntime().gc()区别
首先,我们需要明确一点的是,两个gc都会强制触发垃圾收集,它们只是向JVM建议,现在也许是收集垃圾的好时机。比较System.gc()调用起来更方便,但是会给应用带来不必要的性能问题。还可以通过参数-XX:+DisableExplicitGC.禁止显示调用gc。Runtime.getRuntime()用来与Java运行时进行交互,调用该方法会建议JVM花费精力回收不再使用的对象。源代码S...原创 2019-07-13 16:41:37 · 3945 阅读 · 0 评论 -
Java8 默认的GC收集器是?
起源网上很多博文都java8之前的jvm的各种设置介绍,尤其关于Java8使用哪种垃圾收集算法以及jvm方面改变没有准确的介绍。本文主要参考Oracle官方文档。因此会有大量英文引用。默认的GC算法-XX:+PrintCommandLineFlags (具体介绍在https://docs.oracle.com/javase/8/docs/technotes/guides/troublesho...原创 2019-07-21 10:15:18 · 12264 阅读 · 0 评论 -
Java9 默认的GC收集器是?
我们在介绍了Java8的默认收集器ParallelGC后, 很多人就继续追问那Java9默认使用哪种收集器呢?直接看官方文档(https://docs.oracle.com/javase/9/whatsnew/toc.htm#JSNEW-GUID-B6CD8C25-FD93-4CAA-9286-19A39CC0F26A),其中一段Makes Garbage-First (G1) the de...原创 2019-07-21 10:33:18 · 4271 阅读 · 3 评论 -
Java 堆默认大小
最近在调整程序的堆大小设置,就顺便看默认开发环境中如何设置的。发现开发环境没有主动设置大小,那就应该是根据机器配置和操作系统,以及JDK版本等信息确定。查询 PrintFlagsFinal关于查询命令,请参考官方文档:-XX:+PrintFlagsFinal which outputs the values of all of the jvm configuration parameters...原创 2019-08-04 13:30:12 · 14071 阅读 · 0 评论 -
Docker 中无法使用 JDK jmap之 Can't attach to the process: ptrace(PTRACE_ATTACH问题
问题描述一个老服务最近出现OOM问题了(日志中发现的),但是由于启动参数没有添加-XX:HeapDumpOnOutOfMemoryError无法获取dump文件,这时想着使用jmap获取dump文件,结果执行jmap报如下错:# jmap -heap 6Attaching to process ID 6, please wait...Error attaching to process:...原创 2019-08-18 20:03:04 · 9831 阅读 · 1 评论 -
jstat命令基本用法
诊断程序性能问题,或者OOM问题需要查看程序运行的一些统计信息,jstat为我们提供了很多虚拟机运行时的状态信息,它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等信息。基本用法我的jdk是1.8.0_191D:。。。。\dir1>jstat -helpUsage: jstat -help|-options jstat -<option>...原创 2019-08-18 11:18:09 · 1973 阅读 · 0 评论 -
逃逸分析(Escape Analysis)与栈上分配
逃逸分析了解JVM内存模型的大都知道Java的对象、数组都是在堆上分配的,实际上JVM还有更高级非分配技术。逃逸分析(Escape Analysis)就是其中之一。逃逸分析是目前Java虚拟机中比较前言的优化技术,他与类型继承关系分析一样,并不是直接优化代码的手段,而是为前天优化手段提供依据的分析技术。逃逸分析的基本行为就是分析动向的动态作用域:当一个对象在方法中被定义后,它可能被外部方法所...原创 2019-09-21 16:47:48 · 2836 阅读 · 1 评论