定位Java运行时 代码段方法

1.搜索java进程  ps -ef | grep java

2.查看进程的线程 top -p 17620 -H

3.打出进程的执行堆栈

jstack 17620 > 1.txt

4.识别线程号

5.查看线程执行的代码段

说明在执行a.main方法!!! (at a.main(a.java:15))

时间: 2024-10-14 20:19:55

定位Java运行时 代码段方法的相关文章

Java运行时数据区域(堆 栈 方法区 常量池)

运行时数据区域 (1)程序计数器(program counter register) 一块较小的内存空间 当前线程所执行的字节码的行号指示器,字节码解释器在工作的时候就是通过改变程序计数器的值来选取下一跳要执行的指令 多线程环境下,线程轮流切换执行,程序计数器保证线程切换之后能恢复到正确的位置 每个线程都有一个独立的程序计数器 线程私有 没有任何异常 (2)虚拟机栈(stack) 虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的过程中都会创建一个栈帧,用于存储局部变量表.操作数栈.动

Java运行时环境---内存划分

背景:听说Java运行时环境的内存划分是挺进BAT的必经之路. 内存划分: Java程序内存的划分是交由JVM执行的,而不像C语言那样需要程序员自己买单(C语言需要程序员为每一个new操作去配对delete/free代码),放权给JVM虚拟机处理有利也有弊,好处是不容易出现内存泄漏和内存溢出问题,坏处就是自己的屁股不能自己擦,万一有一天JVM罢工不释放了,还是自个忘了释放,So了解虚拟机容易引起内存泄漏和溢出的场景对Java程序员来说还是必不可少的.[内存泄漏:Out Of Memmory,系统

深入理解Java运行时数据区

前情回顾 在本专栏的前12篇博客中, 我们主要大致介绍了什么是JVM, 并且详细介绍了class文件的格式. 对于深入理解Java, 或者深入理解运行于JVM上的其他语言, 深入理解class文件格式都是必须的. 如果读者对class文件的格式不是很熟悉, 在阅读本博客下面的文章之前, 建议先读一下前面的12篇博客, 或者参考其他资料, 熟悉class文件的格式. 在深入理解Java虚拟机到底是什么 这篇博客中, 我们有提到过, JVM就是一个特殊的进程, 我们执行的java程序, 都运行在一个

Jvm基础-Java运行时数据区

最近在看<深入理解Java虚拟机>,里面讲到了Java运行时数据区,这是Jvm基本知识,把读书笔记记录在此.这些知识属于常识,都能查到的,如果我有理解不对的地方,还请指出. 首先把图贴上来,图来自JVM Runtime Data Areas(运行时数据区),感谢. 由上图可知,Java运行时数据区域包括程序计数器.Java虚拟机栈.本地方法栈.Java堆.方法区. 1. 程序计数器 程序计数器用来记录下一条字节码指令,因为CPU是要轮转的,在切换回来之后,Java能够找到下一条要执行的指令.如

java运行时内存模式学习

学习java运行时内存模式: 各区介绍: 方法区(线程共享):用于存放被虚拟机加载的类的元数据:静态变量,常量,以及编译和的代码(字节码),也称为永久代(所有该类的实例被回收,或者此类classLoader被回收). Java堆(线程共享):存放对象实例和数组,这里是内存回收的主要地方.可以分为新生代(young)和年老代(tenured).从字面也可以知道,新生代存放刚刚建立的对象 而年老代存放长久没有被垃圾回收机制回收的对象.一般新生代有分为eden,from survivor和to sur

Java运行时数据区域划分

Java运行时数据区域划分 Java JVM 内存 堆 栈 1. 概述 对于Java程序员来说,在虚拟机自动内存管理机制下,不容易出现内存泄漏和内存溢出现象.但如果不了解虚拟机是如何使用内存的,一旦出现了内存泄漏和溢出方面的问题,那么排错就无从下手了. 2. 运行时数据区域 Java虚拟机在执行Java程序的过程中会将它所管理的内存划分为若干个不同的数据区域,如下图所示. 2.1. 程序计数器 程序计数器(Program Counter Register):是一块较小的内存空间,可以看做是当前线

Java运行时数据区

Java虚拟机定义了一些程序运行期间会使用到的数据区域,其中一些会随着JVM的启动而创建,随着JVM的退出而销毁:另外一些则与线程的运行一一对立的,这些数据区域会随着线程的开始而创建,随着线程的结束而销毁.下面是一张Java运行时的数据区模型图: 总的来说,Java运行时数据区域可以分为两个部分:线程共享的区域和线程独享的区域.下面一一对之进行总结. 一.线程共享区域:线程共享区域是指各个线程都会使用到的一块空间区域,它们会在这里申请空间.使用空间.根据具体提供功能不同,可以划分为两个部分,分别

java运行时多态性的实现

运行时多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成"一个接口,多个方法".Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现. 一.通过继承中超类对象引用变量引用子类对象来实现 举例说明: //定义超类superA class superA { int i = 100; void fun() { System.out.println("This 

深入理解java虚拟机一 JAVA运行时内存区域与class文件

一 JAVA运行时内存区域 JVM在加载class文件时,会将class文件定义的数据结构转为运行时内存中的数据,那么jvm是如何安排运行时的内存区域呢? jvm将运行时内存划分为以下几个部分: 堆:所有线程共享 方法区:类信息.静态变量.常量等 运行时常量池:class文件的常量池(字面常量和符号引用)+运行时产生的常量 程序计数器:  当前线程执行的字节码的行号指示器 虚拟机栈:栈帧 = 本地局部变量表.操作数栈.动态链接.出口信息 本地方法栈:native方法 直接内存:不属于jvm管理,