精华内容
下载资源
问答
  • 如何获得java对象的内存地址

    万次阅读 2018-03-18 12:59:00
    java中内存中的对象地址是可变的,所以获得的内存地址有可能会变化。要获得内存地址也只能通过Unsafe的方法来获得,如下代码片段:Java代码 package com.bijian.study; import java.lang.reflect.Field; ...

     在java中内存中的对象地址是可变的,所以获得的内存地址有可能会变化。要获得内存地址也只能通过Unsafe的方法来获得,如下代码片段:

    Java代码  收藏代码
    1. package com.bijian.study;  
    2.   
    3. import java.lang.reflect.Field;  
    4. import sun.misc.Unsafe;  
    5.   
    6. public class Addresser {  
    7.       
    8.     private static Unsafe unsafe;  
    9.   
    10.     static {  
    11.         try {  
    12.             Field field = Unsafe.class.getDeclaredField("theUnsafe");  
    13.             field.setAccessible(true);  
    14.             unsafe = (Unsafe) field.get(null);  
    15.         } catch (Exception e) {  
    16.             e.printStackTrace();  
    17.         }  
    18.     }  
    19.   
    20.     public static long addressOf(Object o) throws Exception {  
    21.           
    22.         Object[] array = new Object[] { o };  
    23.   
    24.         long baseOffset = unsafe.arrayBaseOffset(Object[].class);  
    25.         int addressSize = unsafe.addressSize();  
    26.         long objectAddress;  
    27.         switch (addressSize) {  
    28.         case 4:  
    29.             objectAddress = unsafe.getInt(array, baseOffset);  
    30.             break;  
    31.         case 8:  
    32.             objectAddress = unsafe.getLong(array, baseOffset);  
    33.             break;  
    34.         default:  
    35.             throw new Error("unsupported address size: " + addressSize);  
    36.         }  
    37.         return (objectAddress);  
    38.     }  
    39.   
    40.     public static void main(String... args) throws Exception {  
    41.         Object mine = "Hi there".toCharArray();  
    42.         long address = addressOf(mine);  
    43.         System.out.println("Addess: " + address);  
    44.   
    45.         // Verify address works - should see the characters in the array in the output  
    46.         printBytes(address, 27);  
    47.     }  
    48.   
    49.     public static void printBytes(long objectAddress, int num) {  
    50.         for (long i = 0; i < num; i++) {  
    51.             int cur = unsafe.getByte(objectAddress + i);  
    52.             System.out.print((char) cur);  
    53.         }  
    54.         System.out.println();  
    55.     }  
    56. }  

    运行结果:



    另一篇java对象内存地址的文章:Java直接内存读写


    展开全文
  • 用JConsole获得Java heap dump 数据1.使用JConsole/JMX连接到正在运行Wowza Media Server2.选择MBeanstab3.选择com.sun.management/HotSpotDiagnostics对象的Operation4.在dumpHeap参数中输入下面的信息,然后点击...

    6802c1d7cd4c66029427bbed89dd4397.png

    用JConsole获得Java heap dump 数据

    1.使用JConsole/JMX 连接到正在运行Wowza Media Server

    2.选择MBeans tab

    3.选择com.sun.management/HotSpotDiagnostics 对象的Operation

    4.在dumpHeap参数中输入下面的信息,然后点击dumpHeap按钮:

    Code:

    p0:[heap-output-path]

    p1: true - do a garbagecollection before dump heap

    for example:

    p0: c:/dump.dmp

    p1: true

    使用JHat命令获得Java heap dump 数据

    1.打开命令行窗口,进入JDK的安装目录

    2.使用操作系统提供的工具(例如Linux服务器上的 ps -ef或者Windows上的任务管理器)找到运行Wowza Streaming Engine的Java进程ID。

    3.执行以下命令:

    Code:

    jmap -dump:format=b,file=c:\Temp\mymemorydump.hprof[pid]

    其中 [pid] 是Wowza服务进程的ID。

    在下一次抛出OutOfMemory错误的时候自动输出Javaheap dump 数据
    你也可以配置Java,让它在抛出OutOfMemory错误时输出Java heap dump。若要这么做,请编辑[install-dir]/bin/setenv.sh(或Windows服务器上的[install-dir]/bin/setenv.bat或 [install-dir]/bin/WowzaMediaServer-Service.conf),添加以下到JAVA_OPTS:

    Code:

    -XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=[path-to-heapdump]

    其中,[path-to-heapdump] 是Java heap dump 文件保存的路径(例如 /opt)。

    这里还有关于这一点的一些更详细的介绍:http://stackoverflow.com/questions/5...dump-for-jboss获得Java Heap dump文件后,将它上传到某个地方,让Wowza的技术支持团队可以下载下来帮你分析。
    在生成Java Heap dump文件前强制垃圾回收,请先执行以下命令:

    Code:

    jcmd [pid] GC.run

    Wowza Streaming Engine 4是功能强大、API接口丰富的流媒体Server产品,采用它作为流媒体服务器产品的案例很多,直播、在线教育、IPTV都有它的用武之地。

    公司名称:北京哲想软件有限公司

    北京哲想软件官方网站:www.cogitosoft.com

    北京哲想软件微信公众平台账号:cogitosoftware

    北京哲想软件微博:哲想软件

    北京哲想软件邮箱:sales@cogitosoft.com

    销售(俞先生)联系方式:+86(010)68421378

    微信:18610247936     QQ:368531638

    8acdb10b18a8f248913fcf7836eabe94.png

    展开全文
  • 我有我的代码,用户输入一定数量的钱,输出显示二十,十,五,一,四分之一,硬币,镍币和便士的数量, but 我希望用户输入一定数量的...NOTE: DecimalFormat class is not neccessary这是我的代码:import java.ut...

    我有我的代码,用户输入一定数量的钱,输出显示二十,十,五,一,四分之一,硬币,镍币和便士的数量, but 我希望用户输入一定数量的硬币(例如36并得到 ONLY COINS 的数字,这使得36美分 . 这意味着我应该得到1分,1分和1分 . 请有人帮我这个 . 非常感谢!

    NOTE: DecimalFormat class is not neccessary

    这是我的代码:

    import java.util.Scanner;

    import java.text.DecimalFormat;

    public class Compu

    {

    public static void main(String[] args)

    {

    Scanner input = new Scanner(System.in);

    DecimalFormat decimalFormat = new DecimalFormat("0.00");

    System.out.println("Please Enter an amount of Money:");

    double change = input.nextDouble();

    int dollars = (int)change;

    int twenties = dollars / 20;

    int dollars1 = dollars % 20;

    int tens = dollars1 / 10;

    int dollars2 = dollars % 10;

    int fives = dollars2 / 5;

    int dollars3 = dollars % 5;

    int ones = dollars3;

    String moneyString = decimalFormat.format(change);

    String changeString = Double.toString(change);

    String[] parts = moneyString.split("\\.");

    String part2 = parts[1];

    double cents5 = Double.parseDouble(part2);

    int cents = (int)cents5;

    int quarters = cents / 25;

    int cents1 = cents % 25;

    int dimes = cents1 / 10;

    int cents2 = cents % 10;

    int nickels = cents2 / 5;

    int cents3 = cents % 5;

    int pennies = cents3;

    System.out.println("Input entered by user: " + "$" + moneyString);

    System.out.println(twenties + " Twenties");

    System.out.println(tens + " Tens");

    System.out.println(fives + " Fives");

    System.out.println(ones + " Ones");

    System.out.println(quarters + " Quarters");

    System.out.println(dimes + " Dimes");

    System.out.println(nickels + " Nickels");

    System.out.println(pennies + " Pennies");

    }

    }

    展开全文
  •   Java中提供了Class接口用于描述类的运行时信息。此外,还提供了Type接口用于描述类的类型信息。Type接口有多个子类,包括Class、TypeVariable、ParameterizedType等,分别表示运行时类、类参数、参数化类型。...

    获得泛型类的形式参数

      Java中提供了Class接口用于描述类的运行时信息。此外,还提供了Type接口用于描述类的类型信息。Type接口有多个子类,包括Class、TypeVariable、ParameterizedType等,分别表示运行时类、类参数、参数化类型。获得泛型类的形式参数代码如下:

            ArrayList<Integer> arrayList = new ArrayList<Integer>();
            TypeVariable<?>[] typeVariables = arrayList.getClass()
                    .getTypeParameters();
            System.out.println(Arrays.toString(typeVariables)); // E
    复制代码

      利用Class类中的getTypeParameters()方法可以获得描述形式参数的TypeVariable数组。

    获得泛型类的实际参数

    v实际上,泛型类的实际参数是不可获取的,因为在运行期进行了类型擦除。但有一种情况,可以简介获取泛型类的实际参数,代码如下:

    		ArrayList<Integer> arrayList = new ArrayList<Integer>() {
    
    			/**
    			 * 
    			 */
    			private static final long serialVersionUID = 1L;
    
    		};
    		Type type = arrayList.getClass().getGenericSuperclass();
    		ParameterizedType parameterizedType = (ParameterizedType) type;
    		for (Type t : parameterizedType.getActualTypeArguments()) {
    			System.out.println(t.getTypeName()); // java.lang.Integer
    		}
    复制代码

      注意,代码中创建了一个匿名内部了对象arrayList。通过它的getClass()方法获得了匿名内部类对应的Class对象,再借助getGenericSuperClass()方法获得泛型父类的类型信息。

    转载于:https://juejin.im/post/5c25983ee51d45229f76f7fa

    展开全文
  • 前言 ...注意java进程不要占据Pid为1的位置。用shell脚本启动jar包即可 分析过程 首先需要查询java进程的id,使用top命令 top 结果如下 top - 03:15:18 up 32 days, 39 min, 0 users, load average:
  • 今天在开发中做一个java项目,要求读取配置文件中的信息,开始一直写成绝对路径,当项目打jar包以后就找不到配置文件了,后面在网上当了一个方法,问题最后解决了,拿出来跟大家分享一下。    /**  * 获得项目...
  • JDK 代理生成器,在生成类是会根据参数“sun.misc.ProxyGenerator.saveGeneratedFiles”来决定是否将二进制保存到本地文件中, 具体的路径查看源码: ProxyGenerator.access$000(this.val$name) + "...
  • 最近公司产品要加入帮助功能,当触发热键F1时打开浏览器,显示帮助文档页面,触发的过程以及如何调用浏览器不用多说了,当时遇到的问题是:帮助的文档HTML是放在服务端发布的,我们都知道要打开一个浏览器页面需要...
  • 对于一个普通的类型,如Integer,我们可以用Integer.class得到它的Class对象。 但是对于一个模板类,如: class A<T> {} 使用A<Integer>.class却会报错。...有什么办法可以获得模板类的class吗?
  • 1.获取java工程中src目录中的文件 示例:获取src目录下的test.properties文件 public class GetFileFromSrcPath { public static void main(String[] args) { InputStream is = GetFileFromSrcPath.class....
  • import java.io.PrintWriter; import java.io.StringWriter; /** * @author Wesley * */ public class ExceptionUtil { /** * 以字符串形式返回异常堆栈信息 * @param e * @return 异常堆栈信息字符串 */ ...
  • 小弟初来乍到,学习Java,每次查找帮助是总是要登陆到java.sun.com上才能查看其各种类的关系,非常麻烦,请问怎样才能获得文档到本地机上?望请教,不胜感激!
  • Java如何获得系统时间

    2020-12-22 20:53:05
    import java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public ...
  • XP精华如何使Java项目获得更大成功 使用Java语言所进行的面向对象编程变得空前普及。它使软件开发发生了某种程度上的变革,但最近的研究表明,有半数的软件开发项目滞后,而三分之一的项目则超出预算。问题不在于...
  • 在中国几乎没有真正免费的 Java VM 云服务器。云服务器是一种简单高效、安全可靠、处理能力可弹性伸缩的计算服务。其管理方式比物理服务器更简单高效。用户无需提前购买硬件,即可迅速创建或释放云服务器。 云服务器...
  • 如何通过java程序获得Nutch中网页的详细信息
  • JavaScript如何获得java程序输入的动态数据。具体的格式怎么写
  • 我想在过滤器执行完chain.doFilter(request, response)时,获得得response内容
  • Java中,我们可以使用java.util.Scanner从控制台获取用户输入。 1.扫描仪 1.1读一行。 UserInputExample1.java package com.mkyong; import java.util.Scanner; public class UserInputExample1 { ...
  • 在此示例中,我们向您展示如何使用Java和DOM XML解析器从未公开的API下面获取Alexa排名: http://data.alexa.com/data?cli=10&url=domainName 1. Alexa API 例如,在浏览器中键入以下URL: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,446
精华内容 2,178
关键字:

如何获得java

java 订阅