2019独角兽企业重金招聘Python工程师标准>>> hot3.png

In Java, what is the best way to determine the size of an object? 中给出了一个很好的答案。
首先,将下面的类编译并放入jar中:
import java.lang.instrument.Instrumentation;
public class ObjectSizeFetcher {
    private static Instrumentation instrumentation;
    public static void premain(String args, Instrumentation inst) {
        instrumentation = inst;
    public static long getObjectSize(Object o) {
        return instrumentation.getObjectSize(o);
 
在MANIFEST.MF中添加如下内容:
Premain-Class: ObjectSizeFetcher


然后,我们就可以在main函数中尝试获取对象占用的内存大小了:
public class C {
    private int x;
    private int y;
    public static void main(String [] args) {
        System.out.println(ObjectSizeFetcher.getObjectSize(new C()));
 


将上面的代码打包成jar后,执行:
java -javaagent:ObjectSizeFetcherAgent.jar C
-javaagent参数和MANIFEST.MF中的内容,在执行 类C中的main函数之前,ObjectSizeFetcher中的premain方法会执行。这样,instrumentation就有了应用的Instrumentation类型的对象。
Calculate size of Object in Java: http://stackoverflow.com/questions/9368764/calculate-size-of-object-in-java
In Java, what is the best way to determine the size of an object?: http://stackoverflow.com/questions/52353/in-java-what-is-the-best-way-to-determine-the-size-of-an-object
JavaAgent: http://www.cnblogs.com/diyunpeng/archive/2011/05/26/2057932.html
jamm: https://github.com/jbellis/jamm
2019独角兽企业重金招聘Python工程师标准>>> ...
JVM参数配置 Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之,JVM监控与调优主要的着眼点在于如何配置、如何监控、如何优化3点上 java虚拟机的参数中,有3种表示方法 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; 非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用(但是,这些参数往往是非常有用
<groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>4.0.0</version> </dependency> Error response from daemon: Error processing tar file(exit status 1): remove /hosts: device or resou 14365