Java
Java基础知识,命令行使用、jvm等
faith.huan
当你说太晚了的时候,你一定要谨慎,他可能是你退却的借口。
展开
-
Java内存区域之方法区溢出
方法区溢出在Java内存区域的Java虚拟机栈章节介绍过,方法区主要存储类型相关信息,在JDK 6及以前版本字符串常量池也在此区域存储,JDK 7时将字符串常量池移入堆内存。本文主要将分别介绍由字符串常量池、类型相关信息导致内存溢出的情况。字符串常量池我们可以通过String::intern()将字符串存入到字符串常量池中,如下示例代码不断调用String::intern()方法使字符串常...原创 2020-01-12 13:18:16 · 2251 阅读 · 0 评论 -
Java内存区域之栈内存溢出
线程请求的栈深度大于虚拟机所允许的栈深度,将抛出StackOverflowError如果Java虚拟机的栈容量可以动态扩展(HotSpot无法进行扩展,因此不会因为扩展而导致OOM,但如果申请时就失败,依然会出现OOM),当扩展时无法申请到足够的内存会抛出OutOfMemoryError本文将通过代码演示这两种异常原创 2020-01-09 22:55:21 · 345 阅读 · 0 评论 -
Java内存区域之堆内存溢出
堆内存溢出示例虚拟机参数:-Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:/dump/ -verbose:gc堆栈溢出分析使用`Eclipse Memory Analyzer`对上面例子发生OOM时导出的堆快照文件`java_pid11336.hprof`进行分析。原创 2020-01-07 22:29:28 · 401 阅读 · 0 评论 -
Java运行时数据区
Java内存区域Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 — 深入理解Java虚拟机Java虚拟机定义了在程序运行期间使用的各种运行时数据区(run-time data areas)。其中一些数据区(堆、方法区)随虚拟机启动而创建,仅虚拟机关闭时才销毁。其余区域(栈)是线程私有的,随线程启动而创建,随线程退出而销毁。根据J...原创 2020-01-05 18:07:10 · 411 阅读 · 1 评论 -
走进Java之Java发展史
Java发展史OakOak来源于1991年4月由James Gosling博士领导的绿色计划,此计划最初目标是开发一种能够在各类消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。Oak得名于James Gosling办公室外的一颗橡树。Java诞生1995年5月23日,Oak语言改名为Java,并在Sun World大会上发布Java 1.0。Java语言第一次提出Write O...原创 2020-01-03 22:47:07 · 467 阅读 · 0 评论 -
走进Java之Java技术体系
走进Java世界上没有完美的程序,但我们并不因此而沮丧,因为写程序本来就是一个不断追求完美的过程。 — 深入理解Java虚拟机2020年了,从2010年第一个Java Hello World至今已十年,Java自1995年由Oak改名为Java已25年。这一年我32而你25,年轻真好。新的一年先立个小目标,读完《深入理解Java虚拟机》第三版(2019年11月出版...原创 2020-01-02 21:59:54 · 346 阅读 · 1 评论 -
JVM远程监控-JMX
1. 文章目标通过JMX+jvisualvm监控远程JVM,本文以监控Tomcat为例 动态开启JMX(无需重启Java进程) 启动时开启JMX1.1 环境介绍 本机环境简介Win10,192.168.1.1,oracleJdk 1.8.0_201 服务器环境简介Centos 7.6,192.168.1.14,openJdk 1.8.0_232,tomcat 8.5.50...原创 2020-02-04 20:19:22 · 1555 阅读 · 0 评论 -
查看JVM垃圾收集器类型
查看JVM垃圾收集器类型假设java进程id为1000Linux: jcmd 1000 PerfCounter.print |grep gc.collector.*nameWindows: jcmd 1000 PerfCounter.print |findstr gc.collector.*name原创 2020-01-30 20:24:47 · 1728 阅读 · 1 评论 -
JVM远程监控工具-jstatd
jstatd功能在远程服务端启动一个RMI server,允许本地通过jps、jstat命令行工具及jvisualvm可视化工具监控远程服务器的Java进程。jstatd -J-Djava.security.policy=/root/jstatd.all.policy -J-Djava.rmi.server.logCalls=true -J-Djava.rmi.server.hostname=192.168.1.14grant codebase "file:${java.home}/../lib/to原创 2020-01-27 22:09:22 · 2887 阅读 · 0 评论 -
JVM监控工具-jstat
jstat功能监控虚拟机统计信息,主要分为三类:类加载、即时编译、垃圾收集。-class:显示类加载器行为统计信息-compiler:显示解释编译统计信息,包括编译任务数、耗时、编译异常等-printcompilation:显示最新即时编译信息,包括类型、方法、大小等-gc:显示堆垃圾回收行为信息-gccapacity:显示各区域容量信息-gcutil:以`百分比`形式展现垃圾收集汇总信息-gccause:-gcutil输出信息+上一次垃圾收集原因原创 2020-01-26 17:18:59 · 607 阅读 · 0 评论 -
JVM监控工具-jps
jps功能显示目标机器(本机或者远程)上的java进程。用法# 查看命令使用方式[root@localhost ~]# jps -helpusage: jps [-help] jps [-q] [-mlvV] [<hostid>]Definitions: <hostid>: <hostname>[:<port&...原创 2020-01-24 21:55:22 · 428 阅读 · 0 评论